
设计模式
文章平均质量分 73
去海里喂鱼
这个作者很懒,什么都没留下…
展开
-
python设计模式(命令模式)
学习版本3.5.2命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其它对象。命令模式也支持撤销操作。#学习版本3.5.2'''命令模式举例:将军通过传令兵来命令士兵攻击或者防守'''#命令class Command(object): def __init__(self): self.name = "Command" #执行命令原创 2017-11-07 09:41:26 · 208 阅读 · 0 评论 -
python设计模式(观察者模式)
#学习版本3.5.2#观察者模式,它定义了一种一对多的依赖关系,让多个观察者同时监听某一个对象。这个#对象的状态发生变化时候,会通知所有的观察者,是他们能够得到最新的信息#例如:一个个奸细同时在监视小明,在他的身上安装的定位class Person(object): def __init__(self): self._observerlist = [] #原创 2017-11-03 11:06:37 · 167 阅读 · 0 评论 -
python设计模式(模版方法模式)
#学习版本3.5.2#模版方法模式,定义一个工作或者算法的基本流程骨架,将一些特定的流程步骤用继承的#方式来实现#该模式可以使得子类不改变一个算法的结构而重新定义算法的某些特定步骤#例如:出去旅游选择交通方式class Travel(object): def ready(self): print("ready for travel.") def tri原创 2017-11-03 10:24:06 · 188 阅读 · 0 评论 -
python设计模式(策略模式)
#学习版本3.5.2#策略模式,定义一些列算法,把每一个算法都封装起来,并且使它们可以相互替换。#该模式使得算法可独立于使用它的客户变化#例如:出去旅游选择交通方式class TravelStrategy(object): def travelAlgorithm(self): passclass AirPlaneStrategy(TravelStrategy)原创 2017-11-03 09:20:47 · 141 阅读 · 0 评论 -
python设计模式(建造者模式)
#学习版本3.5.2#建造者模式,固定生产过程用来生产同一类产品#例如:工厂生产高级车和普通车class CreateCar(object): def createWheel(self): pass def createCarBody(self): pass def create(self): passclass原创 2017-11-02 17:20:10 · 193 阅读 · 0 评论 -
python设计模式(享元模式)
学习版本3.5.2享元模式的概念:在一个系统中如果有多个相同的对象,那么只共享一份,不必每一个都去实例化一个对象。像python中的数字变量就是用的享元模式。写一个例子,用享元对象去存字符串,在享元对象的工厂中包涵了享元对象池。class Flyweight(object): def __init__(self, str): self.str = str原创 2017-11-02 16:13:04 · 245 阅读 · 0 评论 -
python设计模式(组合模式)
学习版本3.5.2组合模式的目的是将对象组合成树形结构来表示“整体-部分”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。举个例子:用组合模式去做一个简单的文件夹系统class BaseFile(object): def __init__(self, name): self.name = nameclass MyFolder(BaseFil原创 2017-11-02 13:40:53 · 276 阅读 · 0 评论 -
python设计模(桥接模式)
学习版本3.5.2桥接模式,就是将抽象部分有实现部分分离开来,是它们都能够独立变化。举一个例子:我有AB两类工人,他们都可以在12两个流水线上工作,可以随意分配他们去哪个流水线工作。class Worker(object): passclass WorkerTypeA(Worker): def work(self): return "A type w原创 2017-11-02 13:03:36 · 183 阅读 · 0 评论 -
python设计模式(外观模式)
学习版本3.5.2外观模式(Facade Pattern)向客户端提供一个可以访问系统的接口,隐藏了系统的复杂性。比如说,生产a产品需要abc三个流水线生产的零件,我只想管a产品的生产。class ProductionLineA(object): def create(self): print("create component a")class Pro原创 2017-11-02 10:11:42 · 171 阅读 · 0 评论 -
python设计模式(代理模式)
学习版本3.5.2为对象提供代理,用来控制对该对象的访问比如说火车票代购业务,你只需要告诉代购买什么样的车票并且付钱,然后代购就会去买好火车票给你,你不需要直接去火车站或者12306买车票。class TrainStation(object): def buyTicket(self): return "ticket"class ProxyBuyTicket(原创 2017-11-01 16:36:32 · 128 阅读 · 0 评论 -
python设计模式(适配器模式)
学习版本3.5.2对象适配器模式中,适配器中存一个需要被适配的类的对象,调用该对象的方法来实现。类适配器模式中,适配器继承需要被适配的类和目标类。例子:原本有一个用来打印信息的类,现在需要一个新的打印格式,在不修改原来的类的情况下,使用新的打印格式#对象适配器模式class OriginalPrint(object): def myprint(self, str1,原创 2017-11-01 10:19:29 · 195 阅读 · 0 评论 -
python设计模式(原型模式、单例模式)
学习版本3.5.21.原型模式原型模式就是拷贝一个对象实例去生成一个新的对象,当初始化过程复杂的时候这个方法就很方便。import copyclass CloneMyself(object): def shallow_copy(self): return copy.copy(self) def deep_copy(self): re原创 2017-10-31 16:24:48 · 220 阅读 · 0 评论 -
python实现设计模式(一、工厂模式)
学习版本3.5.21.简单工厂有一个工厂存在两个流水线,A流水线生产A零件,B流水线生产B零件,需要A零件的时候跟工厂说生产A零件,需要B零件的时候跟工厂说生产B零件。class ProductionLine(object): passclass ProductionLineA(ProductionLine): def create(self): p原创 2017-10-31 13:52:40 · 340 阅读 · 0 评论 -
python设计模式(中介者模式)
学习版本3.5.2#学习版本3.5.2#中介者模式定义:用一个中介者对象封装一些列的对象交互,中介者使各对象不需要显#式地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互#举例子:通过房产中介租房子class Person(object): def __init__(self, price): self.price = price def原创 2017-11-07 15:27:18 · 269 阅读 · 0 评论 -
python设计模式(访问者模式)
学习版本3.5.2#学习版本3.5.2#访问者模式定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据#结构的前提下定义作用于这些元素的新操作#举例子:系统访问玩家的等级class Player(object): def __init__(self, level): self.level = level def accept(self,原创 2017-11-07 14:34:33 · 276 阅读 · 0 评论 -
python设计模式(状态模式)
学习版本3.5.2#学习版本3.5.2#状态模式定义:允许一个对象在其内部状态改变时改变它的行为。#举例子:灯泡的开关class LightState(object): def display(self): passclass StateOn(LightState): def action(self, light):#开灯状态下按开关原创 2017-11-07 13:56:49 · 289 阅读 · 0 评论 -
python设计模式(备忘录模式)
学习版本3.5.2#学习版本3.5.2'''备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保>存这个状态,这样可以在以后将对象恢复到原先保存的状态'''#例如:我在游戏里先存个档,然后花50金币买了件武器,发现这个武器不好用,就读档#花那100金币去买了另一件武器#存档类class Memento(object): def __init__(se原创 2017-11-07 11:20:46 · 230 阅读 · 0 评论 -
python设计模式(责任链模式)
学习版本3.5.2#学习版本3.5.2'''在责任链模式中,多个不同职能的对象连接起来形成一条链,请求在这个链上传递,直>到链接上有一个对象将请求处理完;发这个请求的客户端并不知道链上的哪一个对象最终处理了这个请求,这可以使得系统可以在不影响客户端的情况下动态的重新组织和分配责任'''#1到3类请求分别需要部门a到b来处理class Department(object): d原创 2017-11-06 16:34:44 · 227 阅读 · 0 评论