【设计模式】外观模式

前言

  1. 单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个全局的访问点。

  2. 工厂模式(Factory Pattern):定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。

  3. 观察者模式(Observer Pattern):定义对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会被自动通知并更新。

  4. 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,而不会影响到其他对象。

  5. 策略模式(Strategy Pattern):定义一系列的算法,将每个算法封装起来,并使它们可以相互替换。

  6. 命令模式(Command Pattern):将请求封装成一个对象,从而使用户可以用不同的请求对客户进行参数化。

  7. 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类能够一起工作。

  8. 外观模式(Facade Pattern):为子系统中的一组接口提供一个统一的接口,从而使得子系统更加容易使用。

  9. 状态模式(State Pattern):允许一个对象在其内部状态改变时改变其行为。

  10. 模板方法模式(Template Method Pattern):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中实现。

这些是Python中常用的设计模式,通过使用这些设计模式可以提高代码的可读性、可维护性和重用性。

外观模式

外观模式是一种结构型设计模式,它为复杂子系统提供一个简化的接口,使得客户端可以更容易地使用这个子系统。

具体实例一

python 复制代码
# 子系统A
class SubsystemA:
    def operation_a1(self):
        print("SubsystemA: Operation A1")

    def operation_a2(self):
        print("SubsystemA: Operation A2")

# 子系统B
class SubsystemB:
    def operation_b1(self):
        print("SubsystemB: Operation B1")

    def operation_b2(self):
        print("SubsystemB: Operation B2")

# 外观类
class Facade:
    def __init__(self, subsystem_a, subsystem_b):
        self.subsystem_a = subsystem_a
        self.subsystem_b = subsystem_b

    def operation(self):
        print("Facade: Operation")
        self.subsystem_a.operation_a1()
        self.subsystem_a.operation_a2()
        self.subsystem_b.operation_b1()
        self.subsystem_b.operation_b2()

# 客户端代码
if __name__ == "__main__":
    # 创建子系统的实例
    subsystem_a = SubsystemA()
    subsystem_b = SubsystemB()

    # 创建外观实例并传入子系统
    facade = Facade(subsystem_a, subsystem_b)

    # 客户端通过外观接口调用子系统的操作
    facade.operation()

SubsystemASubsystemB是两个独立的子系统,它们提供了一些操作。Facade 是外观类,它封装了子系统的操作,并提供了一个简单的接口**operation**给客户端使用。客户端只需要通过外观类的接口调用操作,而不需要了解子系统的内部实现。

应用场景

  1. 当一个复杂系统有许多子系统,而客户端只关心与一个高层接口交互时。
  2. 当需要将子系统的接口与客户端分离,以便子系统的变化不影响客户端。
相关推荐
李广坤11 小时前
状态模式(State Pattern)
设计模式
李广坤12 小时前
观察者模式(Observer Pattern)
设计模式
李广坤13 小时前
中介者模式(Mediator Pattern)
设计模式
李广坤13 小时前
迭代器模式(Iterator Pattern)
设计模式
李广坤13 小时前
解释器模式(Interpreter Pattern)
设计模式
阿无,16 小时前
java23种设计模式之前言
设计模式
Asort17 小时前
JavaScript设计模式(八):组合模式(Composite)——构建灵活可扩展的树形对象结构
前端·javascript·设计模式
数据智能老司机17 小时前
数据工程设计模式——数据基础
大数据·设计模式·架构
笨手笨脚の20 小时前
设计模式-代理模式
设计模式·代理模式·aop·动态代理·结构型设计模式
Overboom1 天前
[C++] --- 常用设计模式
开发语言·c++·设计模式