作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,这里是当前代码如何工作的说明。我知道这可能不是复合的完美表示,但我不确定还能调用它什么:
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/
我是一名优秀的程序员,十分优秀!