我在看代理模式,对我来说,它看起来很像装饰器、适配器和桥接模式。我是不是误会了什么?有什么不同?为什么我要使用代理模式而不是其他模式?您过去是如何在现实世界的项目中使用它们的?
Proxy、Decorator、Adapter 和 Bridge 都是“包装”类的变体。但它们的用途不同。
*当您想要延迟实例化对象、隐藏您正在调用远程服务的事实或控制对对象的访问时,可以使用 *代理。
Decorator 也称为“智能代理”。当您想向对象添加功能但不扩展该对象的类型时使用此选项。这允许您在运行时这样做。
*当您有一个抽象接口并且您希望将该接口映射到另一个具有相似功能但接口不同的对象时,将使用 *适配器。
Bridge 与 Adapter 非常相似,但是当您同时定义抽象接口和底层实现时,我们将其称为 Bridge。即,您不适应某些遗留或第三方代码,您是所有代码的设计者,但您需要能够交换不同的实现。
外观 是一个或多个类的子系统的更高级别(阅读:更简单)的接口。假设您有一个复杂的概念,需要多个对象来表示。对那组对象进行更改是令人困惑的,因为您并不总是知道哪个对象具有您需要调用的方法。是时候编写一个外观,它为您可以对对象集合执行的所有复杂操作提供高级方法。示例:学校部门的领域模型,具有countStudents()、reportAttendance()、assignSubstituteTeacher()等方法。
countStudents()
reportAttendance()
assignSubstituteTeacher()