标签: 设计模式

14 篇文章

模板模式
模板模式行为模式 场景一次性实现一个算法的不变部分各个子类中的公共行为应该被提取出来并集中到一个公共父类中以避免代码重复 from abc import ABCMeta, abstractmethod from time import sleep class Window(metaclass=ABCMeta): @abstractmethod de…
策略模式
策略模式行为模式 定义一系列算法 一个个封装起来 并使他们可以相互替换本模式可独立于使用他的客户而变化 from abc import ABCMeta, abstractmethod # 抽象策略 class Strategy(metaclass=ABCMeta): @abstractmethod def execute(self, data): …
观察者模式
观察者模式行为模式 设计时设计成可以取消订阅当发布者状态改变时 所有依赖他的订阅者都得到通知并被自动更新观察者模式又称 发布-订阅 模式 from abc import ABCMeta, abstractmethod # 抽象 观察者 订阅者 class Observer(metaclass=ABCMeta): @abstractmethod de…
责任链模式
责任链模式行为模式 多个对象都有机会处理请求 将这些对象连成一条链 并沿着这条链传递该请求 直到有一个对象处理它为止可以只有一个链最终处理 也可以每个链都处理一遍 from abc import ABCMeta, abstractmethod class Handler(metaclass=ABCMeta): @abstractmethod def…
代理模式
为其他对象提供一种代理以控制对这个对象的访问种类:远程代理 为远程对象提供代理 待完善虚代理 根据需要创建很大的对象 可以进行优化例如根据需求创建对象保护代理 控制对原始对象的访问 用于对象有不同权限访问时 认证时 允许在访问一个对象时有一些附加的内部处理 from abc import ABCMeta, abstractmethod # 抽象实体…
外观模式
外观模式定义了一个高层接口 这个接口使得这一子系统更加容易使用不用调用子系统 而是封装一个高级的外观 来调用外观 # 子系统 class CPU: def run(self): print('CPU开始运行') def stop(self): print('CPU停止运行') # 子系统 class Disk: def run(self): pri…
组合模式
将对象组合成树形结构以表示 '部分|整体' 的成次结构(特别是递归结构) 使用户对单个对象和组合对象的使用具有一致性可以一次性对某个节点做统一操作 from abc import ABCMeta, abstractmethod # 抽象主件 class Graphic(metaclass=ABCMeta): @abstractmethod def …
桥模式
多个维度组合将一个事物的两个维度分离(不知道是否可以多个维度, 日后有机遇进行补充) 使用其都可以独立的变化 from abc import ABCMeta, abstractmethod # 形状类 维度 形状与颜色组合 class Shape(metaclass=ABCMeta): def __init__(self, color): self…
适配器模式
将一个类的接口转换成客户希望的另一个接口使原本由于接口不兼容而不能一起工作的那些类可以一起工作 from abc import ABCMeta, abstractmethod # 抽象类 class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): pass clas…
建造者模式
创建一系列复杂对象 控制顺序 from abc import ABCMeta, abstractmethod class Player: def __init__(self, face=None, body=None, arm=None, leg=None): self.face = face self.body = body self.arm =…