代理,装饰器,适配器和网桥模式如何不同?

问题:

我正在看代理模式,对我来说似乎很像很多像Decorator,Adapter和Bridge模式。我误会了吗?有什么不同?为什么要使用代理模式与其他模式?过去在现实世界的项目中如何使用它们?

回答:

代理,装饰器,适配器和桥都是“包装”类的变体。但他们的用途是不同的。

  •  当您想要延迟实例化一个对象时,可以使用代理,或隐藏您正在调用远程服务的事实,或者控制对该对象的访问。
  •  装饰也称为“智能代理”。当您要向对象添加功能时,而不是通过扩展该对象的类型来使用它。这允许您在运行时这样做。
  •  当您有一个抽象界面时,会使用适配器,并且要将该接口映射到另一个具有相似功能角色的对象,但是其他对象也是不同的接口。
  •  与Adapter非常相似,但是当您定义抽象接口和底层实现时,我们称之为Bridge。即您不适应某些旧版或第三方代码,您是所有代码的设计者,但您需要能够交换不同的实现。
  •  正面是一个或多个类的子系统的更高级(读取:更简单)接口。假设你有一个复杂的概念,需要多个对象来表示。对这组对象进行更改是令人困惑的,因为您不总是知道哪个对象具有您需要调用的方法。那就是写一个Facade的时候,为所有可以做的复杂操作提供高级方法来收集对象。示例:学校课程的域模型,其中包含countStudents()reportAttendance()assignSubstituteTeacher()等方法。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do the Proxy, Decorator, Adapter, and Bridge Patterns differ?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 41 = 43