一、什么是设计模式
程序设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
程序设计模式这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。
二、遵循模式原则
设计原则七大原则
单一职责原则(Single Reponsibility Principle)是尽量让一个类负责一个接口(功能)。
开闭原则(Open/Close Principle)是指编写类的时候,要符合对类扩展开放,对类的修改关闭。
里氏替换原则(Liskov substitution Principle)是指我们的编写子类,可以在保证业务正确的情况下,替换掉父类。
接口隔离原则(InterfaceSegregation Principle)是指接口应该保持单一性,一个接口干一件事情。不要合并多个接口到一个接口。
依赖反转原则(Dependency InversionPrinciple)指高层模块不应该依赖底层模块,具体就是Controller使用Service的接口,而不应该直接使用Service具体类。
迪米特原则/最少知识原则(Least Knowledge Principle)是指使用类和被使用类之间有个中介,达到使用者尽可能少的知道被使用者的信息。也就是如果客户端要使用service,那么客户端直接使用service的中介就好了。
。
三、所有设计模式特点
创建型模式:描述的是根据需求怎样创建对象。
结构型模式:描述的是如何处理类或者对象之间的关系,通过某种布局组成一个比较完善的结构。然后方便客户端使用。
行为型模式:描述多个类或者对象如何协同处理单个对象无法完成的任务。(程序在运行时复杂的流程控制)。我们应该根据 自己的应用场景,选择合适的模式类型,再定位具体的设计模式。
类型 | 设计模式 | 描述 |
---|---|---|
创建型 | Factory 模式 | 被实例化的子类 |
AbstactFactory 模式 | 针对一个类的唯一实例 | |
Singleton模式 | 单选按钮 | |
Builder模式 | 如何创建一个组合对象 | |
Prototype 模式 | 针对被实例化的类 | |
结构型 | Bridge模式 | 对象的实现 |
Adapter 模式 | 针对对象的接口 | |
Decorator模式 | 针对对象的职责,不生成子类 | |
Composite 模式 | 模式 一个对象的结构和组成 | |
Flyweight模式 | 对象的存储开销 | |
Facade模式 | 对一个子系统的接口 | |
Proxy模式 | 如何访问一个对象;该对象的位置 | |
行为型 | Template 模式 | 对算法中的某些步骤 |
Strategy模式 | 算法 | |
State模式 | 对象的状态 | |
Observer模式 | 对多个对象依赖于另外一个对象,而这些对象又如何保持一致 | |
Memento模式 | 对一个对象中哪些私有信息存放在该对象之外,以及在对什么时候进行存储 | |
Mediator 模式 | 对象间怎样交互、和谁交互 | |
Command模式 | 何时、怎样满足一个请求 | |
Visitor模式 | 某些可作用于一个(组)对象上的操作,但不修改这些对象的类 | |
Chain of Responsibility模式 | 满足 |