gpt4 book ai didi

java - 将叶对象完全隐藏在复合对象中并限制对其的访问是否有充分的理由?

转载 作者:行者123 更新时间:2023-12-02 08:12:28 24 4
gpt4 key购买 nike

例如,这里是当前代码如何工作的说明。我知道这可能不是复合的完美表示,但我不确定还能调用它什么:

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();
}
}

我的论点是简单地完全开放对叶对象的访问并仅返回实例,然后调用代码可以对其执行任何操作。但是,我想知道这样做是否会有缺点。

最佳答案

这告诉您您的设计有问题。您的意思是,继承层次结构中较低的方法需要在较高的位置可见。您的接口(interface)应该表达可以在实现上执行的所有操作。另外,您的示例可能是 Adapter而不是Composite .

关于java - 将叶对象完全隐藏在复合对象中并限制对其的访问是否有充分的理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com