# 设计模式Python版 **Repository Path**: mmyyxx/designpatterns ## Basic Information - **Project Name**: 设计模式Python版 - **Description**: 设计模式Python实现,主要参考大话设计模式的案例 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2024-02-15 - **Last Updated**: 2025-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: 设计模式, Python ## README # 简单工厂 ![输入图片说明](https://foruda.gitee.com/images/1708007610529320950/49e426e7_410687.png "屏幕截图")工厂模式 # 工厂模式 定义一个创建对象接口,让子类去实例化。工厂方法使类的实例化延迟到子类 简单工厂区别: 简单工厂包含必要的逻辑判断,根据客户端条件实例化相关类, ![输入图片说明](https://foruda.gitee.com/images/1708007653563271748/ca41a62e_410687.png "屏幕截图") # 抽象工厂 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 ![输入图片说明](https://foruda.gitee.com/images/1708007669899173454/cba93ea8_410687.png "屏幕截图") # 策略模式 定义一系列算法,所有算法完成相同的工作,实现不同。 作用:减少算法间的耦合,由Context确定具体算法,侧重算法的封装。 ![输入图片说明](https://foruda.gitee.com/images/1708007682788426878/5d74b705_410687.png "屏幕截图") # 装饰模式 动态给一个对象添加一些额外的职责。 利用setComponet来对对象包装。 作用:为已有功能动态的添加一些功能 ![输入图片说明](https://foruda.gitee.com/images/1708007697451053126/0d570962_410687.png "屏幕截图") # 代理模式 为其他对象提供一种代理以控制这个对象的访问 ![输入图片说明](https://foruda.gitee.com/images/1708007707185083087/04009d94_410687.png "屏幕截图") # 原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建对象。 ![输入图片说明](https://foruda.gitee.com/images/1708007722985490264/8ee2b21a_410687.png "屏幕截图") # 模板方法模式 某一细节上的一系列过程或者一系列步骤,在个别步骤上实现不同时考虑模板方法。 ![输入图片说明](https://foruda.gitee.com/images/1708007733515821878/31618993_410687.png "屏幕截图") # 外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口。 ![输入图片说明](https://foruda.gitee.com/images/1708007742324768932/cc288d48_410687.png "屏幕截图") # 建造者模式 将复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 使用场景:当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。 ![输入图片说明](https://foruda.gitee.com/images/1708007782695367080/ea684c76_410687.png "屏幕截图") ![输入图片说明](https://foruda.gitee.com/images/1708007831156713650/7d95d6b6_410687.png "屏幕截图") # 观察者模式 ![输入图片说明](https://foruda.gitee.com/images/1708007841579083289/c6fd4a51_410687.png "屏幕截图") # 状态模式 当对象状态改变时允许改变其行为,这个对象看起来像是改变了其类。 主要解决当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列的类中。 ![输入图片说明](https://foruda.gitee.com/images/1708007854321270464/ef06f4c7_410687.png "屏幕截图") ![输入图片说明](https://foruda.gitee.com/images/1708007861977887936/a8c02bc6_410687.png "屏幕截图") # 适配器模式 将一个类的接口转换成客户希望的另一种接口 ![输入图片说明](https://foruda.gitee.com/images/1708007872073388275/28e5c3c8_410687.png "屏幕截图") # 备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 适用于功能比较复杂,但需要维护或记录属性历史的类。 ![输入图片说明](https://foruda.gitee.com/images/1708007881465319199/f55721cc_410687.png "屏幕截图") # 组合模式 将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 ![输入图片说明](https://foruda.gitee.com/images/1708007889756358223/6a1afd17_410687.png "屏幕截图") # 桥接模式 合成聚合----尽量使用合成聚合,尽量不要使用合成聚合。 桥接模式---将抽象部分与它的实现部分分离,是他们都可以独立地变化 ![输入图片说明](https://foruda.gitee.com/images/1708007900605996590/fc161638_410687.png "屏幕截图") # 命令模式 将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化。 ![输入图片说明](https://foruda.gitee.com/images/1708007908629489303/faf23303_410687.png "屏幕截图") # 责任链模式 请求沿着链传递直至一个handler处理它 ![](https://foruda.gitee.com/images/1708007917129214563/74aa43a9_410687.png "屏幕截图") # 中介者模式 用一个中介对象封装一系列的对象交互。中介者使得各对象不需要显示的互相引用。 ![输入图片说明](https://foruda.gitee.com/images/1708007930380093056/c9ebd069_410687.png "屏幕截图") # 享元模式 运用共享技术有效的支持大量细粒度的对象。 ![输入图片说明](https://foruda.gitee.com/images/1708007942631045683/72f04a89_410687.png "屏幕截图") # 解释器模式 ![输入图片说明](https://foruda.gitee.com/images/1708007957668775520/9ec5c02a_410687.png "屏幕截图") ![输入图片说明](https://foruda.gitee.com/images/1708007965825732123/9a27092a_410687.png "屏幕截图") # 访问者模式 ![输入图片说明](https://foruda.gitee.com/images/1708007974478985632/21edef4f_410687.png "屏幕截图")