随笔分类 -  设计模式

摘要:内容:定义一个操作中的算法骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。使用模板方法,需要用到两种角色,分别是抽象类和具体类。抽象类的作用是是定义抽象类(钩子操作),实现一个模板方法作为算法的骨架。具体类的作用实现原子操作。 import ti 阅读全文
posted @ 2020-09-12 17:53 第十一个程序员 阅读(162) 评论(0) 推荐(0)
摘要:定义多算法,把它们封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色有:抽象策略、具体策略和上下文。 from abc import ABCMeta, abstractmethod from datetime import datetime # 抽象策略模式 class 阅读全文
posted @ 2020-09-12 17:28 第十一个程序员 阅读(145) 评论(0) 推荐(0)
摘要:观察者模式应用比较广泛,又被称为“发布-订阅”模式。它用来定义对象间一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被自动更新。观察者模式的角色有:抽象主题、具体主题(发布者)、抽象观察者和具体观察者(订阅者)。 from abc import ABCMeta, abs 阅读全文
posted @ 2020-09-12 16:49 第十一个程序员 阅读(178) 评论(0) 推荐(0)
摘要:责任链模式的内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链并沿着这条链传递该请求,直到有一个对象处理它为止。责任链的角色有抽象处理者、具体处理者和客户端。 from abc import ABCMeta, abstractmethod# 抽象处理着 阅读全文
posted @ 2020-09-10 21:58 第十一个程序员 阅读(199) 评论(0) 推荐(0)
摘要:类适配器模式,缺单是如果有多个类需要编写多个适配器类 from abc import ABCMeta, abstractmethod # 目标接口 class Payment(metaclass=ABCMeta): @abstractmethod def pay(self, money): pass 阅读全文
posted @ 2020-09-09 11:43 第十一个程序员 阅读(161) 评论(0) 推荐(0)
摘要:"""简单工厂模式不是23中设计模式中的,但是必须要知道。简单工厂模式不直接向客户端暴露对象创建的细节,而是通过一个工厂类来负责创建产品类的实例。简单工程模式的角色有:工厂角色、抽象产品角色、具体产品角色,通过例子来加深理解:""" from abc import ABCMeta, abstract 阅读全文
posted @ 2020-08-14 18:11 第十一个程序员 阅读(378) 评论(0) 推荐(0)
摘要:装饰器单例模式 import threading import time class SingLeton(object): _instance = None lock = threading.RLock() def __new__(cls): if cls._instance: return cls 阅读全文
posted @ 2020-08-12 10:23 第十一个程序员 阅读(82) 评论(0) 推荐(0)