Facade模式与其他模式的区别
我有一个关于模式的问题。我确实对设计模式有疑问。您能告诉我外观模式和构建器模式、工厂模式和抽象工厂模式之间的区别吗?
I have a question about patterns. I really have problems with design patterns. Can you tell me the differences between Facade Pattern and Builder, Factory and Abstract Factory patterns?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当您想要隐藏实现或以其他方式在外部提供不同的接口时,可以使用外观模式。当您想要隐藏构造实例的详细信息时,可以使用构建器/工厂模式。
The facade pattern is used when you want to hide an implementation or otherwise make available a different interface externally. The builder/factory pattern is used when you want to hide the details on constructing instances.
外观模式从开发人员那里抽象出细节,并使代码的某些部分更易于使用。
构建器模式将对象的构造与其表示分离。这使得在多种类型中使用相同的构建过程成为可能。
工厂和抽象工厂都根据调用工厂时使用的某些参数来实例化一组相关的类。
The Facade pattern abstracts details away from the developer and makes a certain portion of code easier to use.
The Builder pattern separates the construction of an object from its representation. That makes it possible to use the same construction process across multiple types.
The Factory and Abstract Factory both deal with instantiating a related set of classes based on certain parameters used when the call to the Factory is made.
这些以及其他模式通常看起来非常相似。区别在于您为使用模式而做出的设计决策。
外观是关于更改某些类或类集的接口。 Builder 通过将构建过程分解为更小的步骤来隐藏构建过程。工厂是关于隐藏对象或对象图的具体实现或实例化。
造成混乱的原因可能是 Builder 通常会以某种方式更改对象的接口以允许更好的构造方式,这也可以通过 Facade 来完成。这与工厂类似。
因此,不要忘记这些模式的实现中的微小差异,并且设计模式最重要的部分是您做出的设计决策。
Those and also other patterns might often look quite similar. The difference is in the design decisions you made to use a pattern.
Facade is about changing the interface of some class or set of classes. Builder hides the process of construction by decomposing it in smaller steps. Factories are about hiding the concrete implementation or instantiation of an object or object graph.
The confusion might come from the fact that often Builder in a way changes the interface of an object to allow a better way of construction, which could be also done by a Facade. It is similar with Factories.
So don't forget about small differences in the implementations of those patterns and that the most important part about design patterns are the design decisions you make.