![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
攒钱买房的迪迦
这个作者很懒,什么都没留下…
展开
-
策略模式
策略模式内容定义一系列算法,把他们一个个封装起来,并且使他们可以相互替换,(算法可独立使用于他的客户而变化)角色抽象策略具体策略上下文优点定义了一系列可重用的算法或者消除了一些条件语句相同行为的不同实现缺点客户必须了解不同的策略代码实例from abc import ABCMeta,abstractmethodclass Strategy(object): """docstring for Strategy""" @abstractmet原创 2020-06-21 19:36:39 · 97 阅读 · 0 评论 -
观察者模式
观察模式内容定义对象中的一对多的依赖关系,当一个对象的状态发生改变。所有依赖于他的对象都得到通知并被自动更新,又被称为“发布-订阅”关系角色抽象主题具体主题抽象观察者具体观察者使用场景当一个抽象模型两方面,其中一个方面依赖另一个方面,将这两个封装在一个独立的对象中,可以使他们各自改变和复用当一个对象的改变需要改变其他对象的时候,而不知道具体有多少对象带改变当一个对象必须通知其他对象,而他又不能假定其他对象是谁(不希望这些对象是紧密耦合的)优点目标和观察者之原创 2020-06-21 19:36:00 · 98 阅读 · 0 评论 -
责任链模式
责任链模式内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些连城一条链,并连着这条链传递该请求,知道有一个对象处理它为止角色抽象处理者具体处理者客户端使用场景有多个对象可以处理一个请求,哪个对象处理由运行时决定在不明确接收者的情况下,向多个对象中的一个提交一个请求优点降低耦合度一个对象无需知道是哪一个对象请求代码实例from abc import ABCMeta, abstractmethodclass原创 2020-06-21 19:35:16 · 95 阅读 · 0 评论 -
代理模式
代理模式内容为其他对象提供一种代理以控制这个兑现的访问使用场景远程代理为远程对象提供代理虚代理根据需要创建很大的对象代码实例class Subject(metaclass=ABCMeta): @abstractmethod def get_content(self): pass @abstractmethod def set_content(self): passclass RealSubject(Sub原创 2020-06-21 19:33:45 · 120 阅读 · 0 评论 -
外观模式
外观模式内容为子系统中的一组接口提供一个一直的界面,外观模式定义了一个高层接口,这个接口是的这个系统更加容易的使用角色外观子系统类优点减少了相互依赖性提高了灵活性提高了安全性代码实例from abc import ABCMeta, abstractmethodclass Cpu(): def run(self): print("cpu正在运行") def stop(self): print("C原创 2020-06-21 19:33:06 · 113 阅读 · 0 评论 -
组合模式
组合模式内容将对象组合成树状结构表示部分-整体的层次结构。组合模式使用户对单个对象和多个对象的使用具有一致性角色抽象组件叶子组件复合组件客户段使用场景表示对象部分-整体的层次结构。(特别是结构是递归的)希望用户忽略组合对象和单个对象的不同,用户统一使用组合结构中的所有对象优点定义了包含基本对象和组合对象的类层次结构简化客户段代码,即客户段可以一致的使用组合对象和单个对象更容易增加新类型组件代码实例from abc import ABCM原创 2020-06-21 19:32:28 · 84 阅读 · 0 评论 -
桥模式
桥模式内容将一个事务的两个维度分离,使其可以独立的变化角色抽象细化抽象实现者具体实现者应用场景当事务有两个维度,两个维度都可能拓展优点抽象和实现相分离优秀的扩展能力代码实例from abc import ABCMeta,abstractmethodclass Shape(metaclass=ABCMeta): # 形状类 """docstring for Shape""" def __init__(self,color): self原创 2020-06-21 19:31:53 · 131 阅读 · 0 评论 -
适配器模式
适配器模式角色目标接口带适配的类适配器使用场景想使用一个已经存在的类,而他的接口不符合你的要求(对象适配器)想使用进行存在的子类,但不能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配他的父类接口内容将一个类的接口转换为客户希望的另一个接口,适配器模式使得原来由于接口不兼容而不能再一起工作的类可以一起工作实现方法类适配器:多继承from abc import ABCMeta,abstractstaticmethodclass Pay(met原创 2020-06-21 19:31:18 · 112 阅读 · 0 评论 -
单例模式
单例模式内容保证一个类只有一个实例,并提供一个访问他的全局访问点角色单例优点对唯一实例的受控访问相当于全局变量,防止了命名空间被污染代码实例class Danli: """docstring for Danli""" def __new__(cls,*args,**kwargs): if not hasattr(cls,'_instance'): cls._instance = super(Danli,cls).__new__(cls) return原创 2020-06-21 19:30:45 · 96 阅读 · 0 评论 -
建造者模式
建造者模式内容将一个复杂的对象的构建和他的表示分离,使得同样构建过程可以创建不同的表示角色抽象建造者具体建造者指挥者产品优点隐藏了一个产品的内部结构和装配过程将构造代码和表示代码分开对构造代码进行更细致的控制区别:和抽象工厂相似,也用来创建复杂对象。主要区别是:建造者模式主要是一步步构造一个复杂的对象,而抽象工程是着重于多个系类的产品对象实例代码from abc import ABCMeta,abstractclassmethod# 建造者模式原创 2020-06-21 19:30:06 · 99 阅读 · 0 评论 -
设计模式之模板方法模式
建造者模式内容将一个复杂的对象的构建和他的表示分离,使得同样构建过程可以创建不同的表示角色抽象建造者具体建造者指挥者产品优点隐藏了一个产品的内部结构和装配过程将构造代码和表示代码分开对构造代码进行更细致的控制区别:和抽象工厂相似,也用来创建复杂对象。主要区别是:建造者模式主要是一步步构造一个复杂的对象,而抽象工程是着重于多个系类的产品对象实例代码from abc import ABCMeta,abstractclassmethod# 建造者模式原创 2020-06-17 16:41:40 · 79 阅读 · 0 评论 -
设计模式中的工厂模式
创建型设计模式内容 不需要像客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例角色工厂模式(creater)抽象产品角色(Product)具体产品角色(Concrete Productxten)普通工厂模式优点:隐藏了对象创建的细节客户段不需要修改代码缺点违反了单一职责的原则,将创建逻辑几种到一个工厂里面当添加新产品时,需要修改工厂的代码,违反了开闭原则from abc import ABCMeta,abstractstat原创 2020-06-16 14:12:16 · 144 阅读 · 0 评论