我找到了一个使我更了解课堂构成的答案。
class Engine
{
}
class Automobile
{
}
class Car extends Automobile // car "is a" automobile //inheritance here
{
Engine engine; // car "has a" engine //composition here
}
但这不是门面图案吗?外观不是通过划分子类来简化类吗?那么构图和立面之间有什么区别?
或者也许我理解错了。外墙是一种设计模式,但构图更像是一种可遵循的好习惯。我们可以说使用立面进行合成吗?
答案 0 :(得分:0)
合成将具有相同API的对象中的N个其他对象组合在一起。因此,您可以在复合对象及其组件上调用相同的方法。
Facade看起来好像做了一些非常相似的事情,但是我认为它解除了复合对象必须符合相同API的限制。 Facade的全部要点是包装器和包装器的API可以不同。
您显示的示例既不是正式的Composite也不是Facade,但是如果您采用Composite的最开放定义,则它可能是一个:“一个对象,其中其他对象作为对象对其执行操作。”
答案 1 :(得分:0)
外观模式是一种设计模式,用于将不适合您当前需求的界面更改为更有用的界面。它完全封装了另一个接口,而不暴露它。
一些使用示例: