ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python设计模式-outline

2022-07-14 17:05:57  阅读:181  来源: 互联网

标签:outline Python 创建 模式 工厂 Patterns 实例 对象 设计模式


python设计模式学习笔记

基于https://github.com/faif/python-patterns 的框架,查询了各个模式的资料,部分译名可能存在其他翻译
施工中,目前进度(7/38)

总述

1 创建型模式(Creational Patterns)

1.1 工厂(Factory)

工厂方法:定义一个用于创建对象的接口函数,可以控制实例化哪一个具体的类。
优点:创建对象时,调用者只需要根据定义好的接口,查询对象名即可,具体对象创建的过程由工厂完成。
缺点:有新的需要创建的对象时,需要增加具体的对象类和对应的工厂实现,维护起来比较麻烦。

1.2 抽象工厂(Abstract Factory)

如果有多个功能类似的工厂,通过抽象工厂,来创建这些工厂。
优点:抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。
缺点:产品族的扩展将是一件十分费力的事情,假如产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改。所以使用抽象工厂模式时,对产品等级结构的划分是非常重要的。

1.3 原型(Prototype)

原型模式通过复制一个"原型实例"并做少量修改,来替代声明多个子类。
优点:原型模式用于创建复杂的或者耗时的实例:复制一个已经存在的实例使程序运行更高效。且对于工厂模式,原型模式减少了子类的构建。
缺点:每一个产品类都必须配置一个克隆方法,并且这个克隆方法需要对类的功能进行整体考虑。

1.4 建造者(Builder)

建造者模式适用于那些内容复杂多变,但是建造过程相同的对象。
优点: 1、建造者独立,易扩展。 2、便于控制细节风险。
缺点: 1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建造类。

1.5 孤例(Singleton)和Borg

目的:全局数据共享。传统孤立模式(Singleton) 思路为限制一个类最多存在一个实例。Borg模式通过保障同类的所有实例共享所有数据,达到了相同的目的。

1.6 对象池(Pool)

目的:对于一些创建起来颇费资源,并且一次只有一小部分被使用的对象,通过对象池可以缓存这些实例,以避免反复创建。
使用范围:一般进程池是一个典型的对象池
这部分还存在不明白的地方,但日常工作暂不涉及进程管理,暂时先不深究

1.7 (Lazy Evaluation)

目的:类的某个属性来自于一个复杂的耗时的计算,但并不是每次都会调用。通过lazy evaluation模式,可以使该值只在真正需要读取的时候才进行一次计算

2 结构型模式(Structural Patterns)

2.1 三层架构:界面层、业务逻辑层、数据访问层(3-tier)

2.2 配适器(Adapter)

2.3 桥接(Bridge)

2.4 组合(Composite)

2.5 装饰器(Decorator)

2.6 外观(Facade)

2.7 享元(Flyweight)

2.9 前段控制器(Front Controller)

2.10 代理(Proxy)

2.11 MVC(Model-View-Controller, MVC)

3 行为型模式(Behavioral Patterns)

3.1 责任链(Chain of Responsibility)

3.2 目录(Catalog)

3.3 方法链(Chainning Method)

3.4 命令(Command)

3.5 迭代器(Iterator)

3.6 中间人(Mediator)

3.7 备忘录(Memento)

3.8 观察者(Observer)

3.9 发布订阅(Publish Subscribe)

3.10 注册(Registry)

3.11 规约(Specification)

3.12 状态(State)

3.13 策略(Strategy)

3.14 模板(Template)

3.15 访问者(Visitor)

4 Design for Testability Patterns

4.1 依赖注入(Dependency Injection)

5 Fundamental Patterns

5.1 委托(Delegation Pattern)

6 Others

6.1 Blackboard

6.3 (Hierarchical State Machine, HSM)

参考资料

https://github.com/faif/python-patterns/readme.md
https://blog.csdn.net/u014472777/article/details/106463132
https://www.cnblogs.com/gaochundong/p/design_pattern_creational_patterns.html

标签:outline,Python,创建,模式,工厂,Patterns,实例,对象,设计模式
来源: https://www.cnblogs.com/yushengchn/p/16478373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有