- 常见结构型设计模式
- 装饰器模式Decorator:无需子类化扩展对象功能
- 代理模式Proxy:把一个对象的操作代理到另一个对象
- 适配器模式Adapter:通过间接层适配其他接口
- 外观模式Facade:简化复杂对象的访问问题
- 享元模式Flyweight:通过对象复用(池)改善资源利用,比如链接池
- Model-View-Controller(MVC):解耦展示逻辑和业务逻辑
- 代理模式:
- 把一个对象的操作代理到另一个对象
- Stack/Queue,把操作代理到deque
- 通常使用has-a组合关系
- eg
- 适配器模式
- 把不同对象的接口适配到同一个接口
- 想象一个多功能充电头,可以给不同的电器充电,充当了适配器
- 当我们需要给不同对象统一接口的时候可以使用适配器模式
- eg:
class Dog: def __init__(self): self.name = 'Dog' def bark(self): return 'wangwang' class Cat: def __init__(self): self.name = 'Cat' def meow(self): return "meow" # 适配器统一他们的接口 class Adapter: def __init__(self, obj, **adapted_methods): "we set the adapted methods in the objects's dict" self.obj = obj self.__dict__.update(adapted_methods) def __getattr__(self, attr): """All non-adapted calls are passed to the object""" return getattr(self.obj, attr) objects = [] dog = Dog() objects.append(Adapter(dog, make_noise=dog.bark)) cat = Cat() objects.append(Adapter(cat, make_noist=cat.meow)) for obj in objects: print(f"A {obj.name} goes {obj.make_noise()}")
把不同的类型统一成同样的接口
设计模式:结构型模式python常用
最新推荐文章于 2024-07-11 10:39:35 发布