我发现了一个响应,它让我理解了更多的类组合。
class Engine
{
}
class Automobile
{
}
class Car extends Automobile // car "is a" automobile //inheritance here
{
Engine engine; // car "has a" engine //composition here
}但这不是一个门面模式吗?facade不是要通过划分子类来使类更简单吗?那么组合和外观之间的区别是什么呢?
也许我搞错了。外观是一种设计模式,但组合更像是一种可遵循的良好实践。我们可以说使用facade就是在做组合吗?
发布于 2018-07-02 18:52:31
组合将具有相同API的对象中的N个其他对象组合在一起。因此,您可以在复合对象及其组件上调用相同的方法。
Facade似乎做了一些非常相似的事情,但我认为它解除了复合对象必须符合相同API的限制。外观的全部意义在于包装器和包装的API可以是不同的。
您展示的示例既不是正式的组合,也不是外观,但如果采用组合的最开放定义,那么它可能是这样的:“将其他对象作为其执行操作的成员的对象”。
发布于 2018-07-10 11:54:02
外观模式是一种设计模式,用于将不适合您当前需求的界面更改为更有帮助的界面。它完全封装了另一个接口,而不是公开它。
下面是一些用法示例:
https://stackoverflow.com/questions/51125814
复制相似问题