设计模式专题(一)——面向对象的设计原则
(原创内容,转载请注明来源,谢谢)
设计模式在程序中,主要服务于设计类、接口等,是以面向对象为基础的,因此面向对象的设计原则是各设计模式中都会考虑与体现的。本篇内容主要从全局角度讲述设计模式的原则,具体每种设计模式的实现,将在后续的文章中逐个写明。
面向对象的设计共有五大原则。
一、单一职责(SRP)
1、含义
单一职责主要满足两点内容:相同的职责避免分散到多个类中;一个类中避免承担太多的职责。
2、最明显体现单一职责的设计模式主要是工厂模式和命令模式。
3、示例
要实现不同数据库的连接,即可以采用工厂模式,通过用户输入的数据库类型,自动进行连接。主要需要实现以下内容:
1)定义接口,要求继承该接口的类都要实现query、where、order、from、select等方法;
2)定义工厂类,其中一个方法通过用户输入的数据库类型,拼接出相应的实现该类型数据库连接的类;
3)实现各类数据库连接的类,每种数据库定义一种类。
4)调用工厂类,输入数据库名,实现连接数据库。
二、接口隔离(ISP)
1、含义
接口隔离主要要求:客户端(如调用接口的类)不应被迫接受不需要的接口,导致被迫定义空方法;一个类对另一个类的依赖应建立在最小接口上。
2、最明显体现接口隔离的设计模式主要是策略模式和代理模式。
三、开放-封闭原则(OCP)
1、含义
开放-封闭原则要求:模块在扩展性上开放,在更改性上封闭;模块在扩展的时候,应该尽量减少对现有模块的改造和影响。
2、最明显体现接口隔离的设计模式主要是装饰模式。
四、替换原则(LSP)
1、含义
替换原则要求:子类型必须能够替换父类型,并出现在父类型任何能出现的地方。因此,满足LSP原则的类,要求基础父类的子类,要覆盖到父类的所有方法,即要求子类调用父类的方法,或者对父类中的方法进行重写。
五、依赖倒置(DIP)
1、含义
依赖倒置要求:上层模块不应依赖下层模块,而应是共同依赖与一个抽象;抽象不依赖于具体,具体依赖于抽象。其核心就是解耦,使各类之间的依赖度降低。
2、实现方式
在高层次的类中提出接口的声明,在低层次中实现接口;高层次的类通过抽象接口使用服务。
——written by linhxx 2017.6.30