目录
设计模式(Design Pattern)
设计模式(Design Pattern)是几十年来的开发人员经过了长时间的试验和摸索,总结出来的一套程序设计标准。无论你使用哪种编程语言,做什么类型的项目,甚至处在一个国际化的开发团队中,当面对同一个设计模式时,你和别人的理解依旧是别无二致。几乎所有的大型软件、编程语言、框架都使用了这些标准。
设计模式可以从 2 个方面来理解:
- 设计:用来解决特定问题的优秀解决方案。
- 模式:具有通用性的执行方式。
设计模式的作用:
- 提高代码的可读性、可靠性、可复用性,使编程真正工程化;
- 便于后期维护项目,增强系统的健壮性和扩展性;
- 锻炼程序员的设计思维,提高代码质量。
设计模式具有以下特点:
- 在架构级别来解决问题。
- 经过了时间的验证和良好的证明,是开发人员和架构师的宝贵经验。
- 具有可靠性和依赖性。
设计模式很有用,但它要用到合适的场景中才能发挥应有的效果,否则可能出现弊大于利的情况。GoF 在《Design Patterns: Elements of Reusable Object-Oriented Software》一书中提出了 23 种设计模式,可归纳为 3 大类。
这些设计模式在 OOP(面向对象编程语言)中使用最多。值得注意的是,因为 Python 拥有一等函数,所以通常的在语法层面就具备了某些设计模式的特性,也减少了某些设计模式的样板代码。
设计模式的分类
一、创建型模式
创建型模式,用于控制或影响一个类的实例化对象的创建过称。为不同的应用场景提供相应的实例化对象的方式。例如:单例模式。
- 单例模式:控制实例化对象的数量只存在一个。
- 工厂方法模式:控制实例化对象时候的类的选择。
- 抽象工厂模式:控制实例化对象时候的类的选择。
- 建造者模式:控制多个类以相同的流程来实例化对象。
- 原型模式:通过深度复制原型类让类的多个实例化更加的迅速。
二、结构型模式
结构型模式,应用于类和对象的构造方式,为不同的应用场景提供相应的类和对象之间的构造关系,使得这些实体能够更好地协同工作。例如:适配器模式。主要关注类的继承和组合,致力于设计出通过组合获得更强大功能的对象和类的结构。
- 适配器模式:将任意个被适配者(类或系统)中的方法封装成为一个统一的接口来调用,从而达到适配各种系统方法的目的。
- 桥接模式:处理(类)抽象部分与(实例化)对象部分之间的结构,使得抽象部分和实例化部分能够单独变化而不互相干扰。
- 组合模式:用于设计一个有层次等级的系统,并处理各层次之间的关系。
- 装饰模式:通过装饰器来扩展一个类或者系统的功能。
- 外观模式:为任意个子系统中的相似功能设计一组统一的界面。
- 享元模式 :让小粒度高频使用的类被共享,减少实例化过程,减少损耗。
- 代理模式:为其他对象提供一种代理,以此控制一个对象的访问方式。Client 必须通过代理访问,而不能直接访问。
三、行为型模式
行为型模式,应用于对象之间的交互方式,为不同的应用场景提供相应的通信方式,为实体之间的通信提供更容易、更灵活的通信方法。
- 解释器模式
- 模板方法模式
- 责任链模式
- 命令模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 访问者模式
|