责任链模式
责任链模式行为模式 多个对象都有机会处理请求 将这些对象连成一条链 并沿着这条链传递该请求 直到有一个对象处理它为止可以只有一个链最终处理 也可以每个链都处理一遍 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 =…
抽象工厂模式
创建一系列复杂对象 每个工厂生产一套对象 可以给一套系统做限制 有利于产品的一致性 难以支持新种类的抽象产品 from abc import abstractmethod, ABCMeta # ------ 抽象产品 ------ class PhoneShell(metaclass=ABCMeta): @abstractmethod def sh…
工厂方法模式
隐藏了对象创建的实现细节每个类都有自己的工厂需要的角色: 抽象工厂 具体工厂 抽象产品 具体产品 from abc import ABCMeta, abstractmethod # 抽象工厂 class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): pass # …
原型模式
只有在调用时才会占用资源 骑士类 class Knight(object): def __init__(self, level): self.unit_type = 'Knight' if level == 1: self.life = 400 self.speed = 5 self.attack_power = 3 self.attack_ran…