一、简介
设计模式代表了最佳实践。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的类型
总共有23种设计模式,可以分为三大类:创建型模式creational patterns、结构型模式structural patterns、行为型模式behavioral patterns。
模式 | 包括 | 描述 |
创建型模式 |
工厂模式、抽象工厂模式、单例模式、 建造者模式、原型模式 |
提供了一种在创建对象的同时隐藏创建逻辑的方式, 而不是使用new运算符直接实例化对象。 这使得程序在判断针对某个给定实例需要创建哪些对象时 更加灵活。 |
结构型模式 |
适配器模型、桥接模式、过滤器模式、 组合模式、装饰器模式、外观模式、 享元模式、代理模式 |
关注类和对象的组合。继承的概念被用来组合接口和定义 组合对象获得新功能的方式。 |
行为型模式 |
责任链模式、命令模式、解释器模式、 迭代器模式、中介者模式、备忘录模式、 观察者模式、状态模式、空对象模式、 策略模式、模板模式、访问者模式 |
特别关注对象之间的通信。 |
设计模式的六大原则
1.开闭原则 open close principle
抽象化:对扩展开放,对修改关闭。在程序需要扩展的时候,不能修改原代码,实现一个热插拔的效果。使用接口和抽象类实现。
2.里氏代换原则LSP liskov substitution principle
抽象化的实现:基类和子类的继承关系,任何基类可以出现的地方,子类一定可以出现。
只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。
3.依赖倒转原则 dependence inversion principle
针对接口编程,依赖于抽象而不是具体。
4.接口隔离原则 interface segregation principle
降低类之间的耦合度。使用多个隔离的接口,比使用单个接口要好。强调低依赖,降低耦合。
5.迪米特原则,最少知道原则 demeter principle
一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
6.合成复用原则 composite reuse principle
尽量使用合成/聚合的方式,而不是使用继承。
二、具体各种设计模式
1.工厂模式
在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。
1.创建抽象基类和各子类,子类可扩展
2.创建工厂类,获得各子类的实例类对象
3.实际调用,调用的是工厂类
通过创建一个抽象基类,各种子类继承基类,实现具体的方法。在创建工厂类,不同的子类标识就返回不同的子类的实例类对象。实际调用的时候,实际上调用的是工厂类,通过不同的传参-子类标识,获得不同子类的实例类对象,进而实例类对象调用各自的函数。
参考:
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
原文:https://www.cnblogs.com/xl717/p/12017961.html