一、单一职责java
不管是在设计类,接口仍是方法,单一职责都会到处体现,单一职责的定义:咱们把职责定义为系统变化的缘由。全部在定 义类,接口,方法的时候。定义完之后再去想想是不能多于一个的动机去改变这个类,接口,方法。若是答案是确定的,说明定义的类,接口,方法则多于一个职 责。故违背单一职责,遇到这种状况应该从新细分职责,直到不会出现多种职责的类,接口方法为止(发现职责,并把那些职责相互分离)。单一职责的为最简单的 五种原则之一。在软件设计的过程当中到处体现。无处不在。编程
二、开闭原则框架
开闭原则是指类、模块、方法是能够扩展的,但不能够 修改。开即对扩张开放,闭即对修改关闭。开闭原则的应用体如今,开发人员应该仅仅对程序中频繁出现变化的地方进行抽象(封装变化点)。对变化点的封装即对 变化的修改关闭。对于变化的不肯定性,可随时扩展。即 继承的使用。抽象类的运用。函数
三、替换原则(Is-A).net
替换原则便是老是保证子类能够替换它的基类。设计
替换原则的实现。对于一组具备相似属性,方法,变量的类。咱们能够提取公共属性,方法,变量作为一个基类(抽象类或者类),使这一组类继承基类,重写虚 方法。如今这些继承的类和基类的关系符合Is-A。如基类为鸟,则继承类能够为麻雀,燕子。咱们能够说麻雀Is-A鸟,燕子Is-A鸟。code
在项目中全部使用子类的地方均可用父类替换,但在调用方法的时候 ,即呈现面向对象编程的多态性。即替换原则,很是重要的原则,也是比较对难的原则。对象
四、依赖倒置原则继承
a、高层模块不该该依赖于低层模块。两者都应该依赖于抽象
b、抽象不该该依赖于细节。细节应该依赖于抽象。接口
在面向过程的开发语言中分析和设计,老是建立一些高层模块去调用低层模块、策略依赖于细节的软件结构。实际上这种方法的目的就是要定义子程序层次结构,该 结构 描述了高层模块怎样调用低层模块。而设计良好的面向对象的程序,正好“倒置”了这种依赖关系。高层模块再也不依赖于低层模块,从而低层模块的修改不会影响到 高层模块,而且高层模块也是能很是容易的被重用,高层模块和低层模块都影响都依赖于抽象。这样也很是符合强内聚松耦合的编程思想。故该原则也是框架设计的 核心原则。
使用传统的过程化程序设计所建立出来的依赖关系结构,策略是依赖于细节的,这是糟糕的,由于这样会使策略受到细节改变的影响,面向对象的程序设计倒置了依赖关系结构,全程细节和策略都依赖抽象,而且经常是客户程序拥有服务接口。
事实上,这种依赖关系的倒置正是好的面向对象设计 的标志所在,使用何种语言来编写程序是可有可无的。若是程序的依赖关系是倒置的,它就是面向对象的设计。若是程序的依赖关系不是倒置的,它就是过程化的设计。
依赖倒置原则是实现许多面向对象技术所宣称的好处的基本低层机制。它的正确应用对于建立可重用的框架来讲是必需的。同时它对于构建在变化面前富有弹性的代码也是很是重要的,因为抽象和细节彼此隔离,因此代码也很是容易维护。
五、接口隔离原则
应该说该原则是处理现有“胖”接口所存在的缺点。若是类的接口不是内聚的,就表示该类具备“胖”接口。换句话说“胖”接口能够分解成多组方法。每一组方法 都服务于一组不一样的客户程序。这样,量引客户程序可使用一组成员函数,而其余客户程序可使用其余组的成员函数。
接口隔离的方法有两种(分享客户就是分离接口):
一、使用委托(此委托非.net委托[delegate])分离接口
使用委托即,建立一个委托类,用此类去实现分离后的其它接口中的方法。
二、使用多重继承分离接口、
此方法,即将现有“胖”接口分红供不一样客户程序调用的两个或多个接口,而须要实现多个接口的客户程序,则使用多重继承来实现。
这两种方法是实现接口隔离的所有方法,其中第二种方法使用较广泛,也比较简单。而第一种方法使用起来相对比较复杂,并且在使用委托的过程当中也会产生重 复的对象,则占用运行时间和内存开销。有的时候第二种方法是必须的,第一种方法是不能使用的。如:利用委托对象所作的转换是必需的,或者不一样的时候会须要 不一样的转换。