![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 61
设计模式
redrose2100
Python开发工程师/DevOps工程师/测试开发工程师
展开
-
设计模式(Python语言描述)全集
设计模式(Python语言)----面向对象设计SOLID原则设计模式(Python语言)----设计模式分类设计模式(Python语言)----简单工厂模式设计模式(Python语言)----工厂方法模式设计模式(Python语言)----抽象工厂模式设计模式(Python语言)----建造者模式设计模式(Python语言)----单例模式设计模式(Python语言)----适配器模式设计模式(Python语言)----桥模式设计模式(Python语言)----组合模式设计模式(Pyt原创 2022-01-09 11:34:21 · 847 阅读 · 0 评论 -
设计模式(Python语言)----模板方法模式
模板方法模式内容定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤模板方法模式中的角色抽象类(Abstract Class):定义抽象的原子操作(钩子操作),实现一个模板方法作为算法的骨架具体类(Concrete Class):实现原子操作模板方法模式使用场景一次性实现一个算法的不变的部分各个子类中的公共行为应该被提取出来并集中到一个公共父类中以避免代码重复控制子类扩展模板方法模式实例代码如下:impor原创 2022-01-09 11:23:09 · 446 阅读 · 0 评论 -
设计模式(Python语言)----策略模式
策略模式内容定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,本模式使得算法可独立于使用它的客户而发生变化策略模式中的角色抽象策略(Strategy)具体策略(Concrete Strategy)上下文策略模式的优点定义了一系列可重用的算法和行为消除了一些条件语句可以提供相同行为的不同表现策略模式的缺点客户必须了解不同策略的特点策略模式的实例代码如下:from abc import ABCMeta,abstractmethodclass Strate原创 2022-01-09 10:21:48 · 529 阅读 · 0 评论 -
设计模式(Python语言)----观察者模式
观察者模式内容定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被自动更新,观察者模式又被称为“发布-订阅”模式观察者模式中的橘色抽象主题(Subject)具体主题(Concrete Subject)----发布者抽象观察者(Observer)具体观察者(Concrete Observer)----订阅者观察者模式适应场景当一个抽象模型有两方面,其中一个方面依赖于另一个方面,将这两者封装在独立对象中以使各自独立地改变和服用当对一个对象的改变需要原创 2022-01-09 09:58:37 · 529 阅读 · 0 评论 -
设计模式(Python语言)----责任链模式
责任链模式内容使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止责任链模式中的角色抽象处理者(Handler)具体处理者(ConcreteHandler)客户端(Client)责任链模式使用场景有多个对象可以处理一个请求,那个对象处理由运行时决定在不明确接受者的情况下,向多个对象中的一个提交一个请求责任链模式的优点降低耦合度,一个对象无需知道是其他哪个对象处理其请求责任链模式实例代原创 2022-01-09 06:12:23 · 694 阅读 · 0 评论 -
设计模式(Python语言)----代理模式
代理模式内容为其他对象提供一种代理以控制对这个对象的访问代理模式的角色抽象实体(Subject)实体(RealSubject)代理(Proxy)代理模式的应用场景远程代理:为远程的对象提供代理虚代理:根据需要创建很大的对象保护代理:控制对原始对象的访问,用于对象有不同访问权限时代理模式的优点远程代理:可以隐藏对象位于远程地址空间的事实虚代理:可以进行优化,例如根据要求创建对象保护代理:允许在访问一个对象使有一些附加的内务处理代理模式实例虚代理实例代码如下from原创 2022-01-09 05:39:01 · 562 阅读 · 0 评论 -
设计模式(Python语言)----外观模式
外观模式内容为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式中的角色外观(facade)子系统类(subsystem classes)外观模式的优点减少了系统的相互依赖提高了灵活性提高了安全性外观模式实例代码如下from abc import ABCMeta,abstractmethodclass CPU: def run(self): print("CPU开始运行...") d原创 2022-01-08 17:08:05 · 501 阅读 · 0 评论 -
设计模式(Python语言)----组合模式
组合模式的内容将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性组合模式中的角色抽象组件(Component)叶子组件(Leaf)复合组件(Composite)客户端(Client)组合模式适应场景表示对象的部分-整体层次结构(特别是结构式递归的)希望用户忽略组合对象与单个对象的不同,用户统一地使用组合结构中的所有对象组合模式的优点定义了包含基本对象和组合对象的类层次结构简化客户端代码,即客户端可以一致地使用组合对象和单原创 2022-01-08 13:36:24 · 467 阅读 · 0 评论 -
设计模式(Python语言)----桥模式
桥模式内容将一个事务的两个维度分离,使其都可以独立地变化桥模式中的角色抽象(Abstraction)细化抽象(Refined Abstraction)实现者(Implementor)具体实现者(concrete Implementor)桥模式的使用场景当事务有两个维度上的表现,两个维度都有可能扩展时桥模式的优点抽象和实现相分离优秀的扩展能力桥模式实例(1)未使用桥模式时,类设计如下,即形状和颜色两个维度都变化时,类的数量是很多的class Shape: pas原创 2022-01-08 00:12:50 · 455 阅读 · 0 评论 -
设计模式(Python语言)----适配器模式
适配器模式内容将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作适配器模式实现方式类适配器:使用多继承对象适配器:使用组合适配器模式中的角色目标接口(Target)待适配的类(Adaptee)适配器(Adapter)适配器模式使用场景想使用一个已经存在的类,而它的接口不符合你的要求想使用一些已经存在的子类,但不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口适配器模式实例(1)类适配器,即原创 2022-01-07 23:16:34 · 927 阅读 · 0 评论 -
设计模式(Python语言)----单例模式
单例模式含义保证一个类只有一个实例,并提供一个访问它的全局访问点单例模式中的角色单例(Singleton)单例模式的优点对唯一实例的受控访问单例相当于全局变量,但防止了命名空间被污染单例模式实例代码如下:class Singleton: def __new__(cls,*args,**kwargs): if not hasattr(cls,"_instance"): cls._instance=super(Singleton,cls)原创 2022-01-07 17:29:35 · 280 阅读 · 0 评论 -
设计模式(Python语言)----建造者模式
建造者模式含义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者模式中的角色抽象建造者(Builder)具体建造者(Concrete Builder)指挥者(Director)产品(Product)建造者模式优点隐藏了一个产品的内部结构和装配过程将构造代码与表示代码分开可以对构造过程进行更精细的控制建造者模式实例代码如下:import abcclass Player(object): def __init__(self,face=No原创 2022-01-07 17:04:27 · 413 阅读 · 0 评论 -
设计模式(Python语言)----抽象工厂模式
抽象工厂模式含义定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象例如:生产一部手机,需要手机壳,CPU,操作系统三类对象进行组装,其中每类对象都有不同的种类,对每个具体工厂,本非生产一部手机所需要的三个对象抽象工厂模式与工厂方法的区别抽象工厂模式中的每个具体工厂都生产一套产品抽象工厂的角色抽象工厂角色(Creator)具体工厂角色(Concrete Creator)抽象产品角色(Product)具体产品角色(Concrete Product)客户端(Client)原创 2022-01-07 15:53:18 · 366 阅读 · 0 评论 -
设计模式(Python语言)----工厂方法模式
工厂方法模式含义定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪个产品类工厂方法模式中的角色抽象工厂角色(Creator)具体工厂角色(Concrete Creator)抽象产品角色(Product)具体产品角色(Concrete Product)工厂方法模式与简单工厂模式的区别简单工厂模式只有一个工厂类,这一个工厂类可以生产出不同产品的实例工厂方法模式是每个产品都有一个工厂类,每个产品额实例都由各自独立的工厂类生产出来优点每个具体产品都对应一个具体工厂类,不需要修原创 2022-01-07 15:10:41 · 399 阅读 · 0 评论 -
设计模式(Python语言)----简单工厂模式
简单工厂模式含义不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例简单工厂模式中的角色工厂角色(Creator)抽象产品角色(Product)具体产品角色(Concrete Product)优点隐藏了对象创建的细节客户端不需要修改代码缺点违反了单一职责原则,将创建逻辑集中到一个工厂类里当增加新产品时,需要修改工厂类代码,违反了开闭原则简单工厂模式示例:代码如下:import abcclass Payment(metaclass=abc.原创 2022-01-07 14:52:31 · 742 阅读 · 0 评论 -
设计模式(Python语言)----设计模式分类
创建型模式工厂方法模式抽象工厂模式创建者模式原型模式单利模式结构型模式适配器模式桥模式组合模式装饰模式外观模式享元模式代理模式行为型模式解释器模式责任链模式命令模式迭代器模式中介者模式备忘录模式状态模式策略模式访问者模式模板方法模式......原创 2022-01-07 14:04:48 · 259 阅读 · 0 评论 -
设计模式(Python语言)----面向对象设计SOLID原则
开放封闭原则一个软件实体类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展里氏替换原则所有引用父类的地方必须能透明地使用其子类的对象依赖倒置原则高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程而不是针对实现编程接口隔离原则使用多个专门的接口,而不使用单一的总接口,即客户端不应该使用依赖那些它不需要的接口单一职责原则不要存在多于一个导致类变更的原因,通俗的说,即一个雷只负责一项职责。原创 2022-01-07 14:01:03 · 324 阅读 · 0 评论 -
设计模式python版(6)-单例模式
1、单例模式简介含义:保证一个雷只有一个实例,并提供一个访问它的全局访问点优点:对唯一实例的受控访问,单例欧式相当于全局变量,但是防止了命名空间被污染在python中,python的模块已经是单例模式了2、代码实现:代码实现如下:class Singleton(object): def __new__(cls,*args,**kwargs): if not hasattr(cls,"_instance"): cls._instance=su原创 2021-07-03 21:36:05 · 191 阅读 · 0 评论 -
设计模式python版(5)-建造者模式
1、建造者模式简介含义:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示优点:隐藏了一个产品的内部结构和装配过程将构造代码与表示代码分开可以对构造过程进行更加精准的控制2、代码实现:代码如下:from abc import ABCMeta,abstractmethodclass Player(object): def __init__(self,face="",body="",arm="",leg=""): self.face=fa原创 2021-07-03 20:42:24 · 214 阅读 · 0 评论 -
设计模式python版(4)-抽象工厂模式
1、抽象工厂模式简介含义:定义一个工厂类接口,让工厂子类创建一系列相关或相互依赖的对象说明:相对工厂方法模式,抽象工厂模式中的每个具体工厂都生产一套产品优点:将客户端与类的具体实现向分离,每个工厂创建了一个完整的产品系列,使得3易于交换产品系列缺点:难以支持新种类(抽象)的产品2、代码实现代码实现如下,学校员工有学生、老师,和工人,每个角色又都有卡,服装,鞋子,每个角色的都不一样,因此,这里就使用了抽象工厂模式,学生,老师和工人分别通过抽象类控制约束,即学生的卡片不能生产原创 2021-07-03 20:22:36 · 336 阅读 · 0 评论 -
设计模式python版(3)-工厂方法模式
1、工厂方法简介含义:定义了一个用于创建对象的接口(工厂接口),让子类决定实现哪一个产品类角色:具体工厂角色优点:每个具体产品都对应一个具体工厂类,不需要修改工厂类代码,隐藏了对象创建的实现细节缺点:每增加一个具体产品类,就必须增加相应的具体工厂类,类的个数规模巨大2、代码实现如下:代码如下:from abc import ABCMeta,abstractmethodclass Person(metaclass=ABCMeta): @abstractmethod原创 2021-07-03 15:31:48 · 360 阅读 · 0 评论 -
设计模式python版(2)-简单工厂模式
1、 简单工厂模式简介含义:不直接向客户端暴露对此昂创建的实现细节,而是通过一个工厂类来负责创建产品类的实例角色:工厂角色优点:隐藏了对象创建的细节,客户端不需要秀爱代码缺点:违反了单一职责原则,将创建逻辑集中到一个工厂类中,当添加新产品时,需要修改工厂类代码2、简单工厂模式代码实现代码如下:from abc import ABCMeta,abstractmethodclass Person(metaclass=ABCMeta): @abstractmethod原创 2021-07-03 14:57:21 · 224 阅读 · 0 评论 -
Python设计模式系列
设计模式python版(1)-设计模式简介与分类原创 2021-07-03 14:42:30 · 180 阅读 · 0 评论 -
设计模式简介与分类(Python语言)
本文详细介绍了基于Python语言的设计模式的简介以及具体23个设计模式分别是哪些原创 2021-07-03 13:32:02 · 184 阅读 · 0 评论