Так, например, вот иллюстрация того, как работает текущий код. Я знаю, что это не может быть идеальным представлением композита, но я не был уверен, как еще назвать его:
public interface MyInterface {
public void doSomething();
public void doSomethingElse();
}
public class MyComposite implements MyInterface {
private MyLeaf myLeaf = new MyLeaf();
public void doSomething() {
// Do something...
}
public void doSomethingElse() {
// Do something else...
myLeaf.doSomethingElse();
}
}
public class MyLeaf implements MyInterface {
public void doSomething() {
// Do something...
}
public void doSomethingElse() {
// Do something else...
}
public void doAnotherSomething() {
// Do another something...
}
}
public class Program {
public static void main(String[] args) {
MyComposite myComposite = new MyComposite();
myComposite.doSomething();
myComposite.doSomethingElse();
// I can't do this right now...
// myComposite.doAnotherSomething();
}
}
Мой аргумент состоит в том, чтобы просто полностью открыть доступ к конечному объекту и просто вернуть экземпляр, и тогда вызывающий код может делать с ним все, что угодно. Однако я хочу знать, будут ли в этом недостатки.