单一职责原则(SRP)
描述:就一个类而言,应该仅有一个引起它变化的原因。
应用:在构造对象时,将对象的不同职责分离至两个或多个类中,确保引起该类变化的原因只有一个。
带来的好处:提高内聚、降低耦合。
用通俗的话说:就是一个类只能做一件事.
在设计模式中用到的主要是:策略模式,状态模式,观察者模式.
开放-封闭原则(OCP)
描述:"对于扩展是开放的"(Open for extension)。这意味着模块的行为是可以扩展的。
当应用的需求改变时,可以对模块进行扩展,使其具有满足改变的新行为。也就是说,我们可以改变模块的功能。
"对于更改是封闭的"(Close for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
应用:高级语言中的接口与虚拟类。
带来的好处:提高灵活性、可重用性、可维护性。
个人观点:OCP的关键是抽象,抽象的目的是创建一个固定却能够描述一组任意个可能行为的基类。而这一组可能的行为则表现为派生类。对于基类的更改是封闭的,所以它里边的方法一旦确定就不能更改(对接口里的方法进行更改将带来灾难性的后果)。
模块通过抽象基类进行引用,对派生类的扩展并不影响整个模块,所以它是开放的。遵循OCP的代价也是昂贵的,创建正确的抽象是要花费开发时间和精力的,同时抽象也增加了软件设计的复杂性。因此有效的预知变化是OCP设计的要点,这需要我们进行适当的调查,提出正确的问题,并利用我们的经验和一般常识来做出判断。正确的做法是,只对程序中频繁变化的部分做出抽象,拒绝不成熟的抽象和抽象本身一样重要。
在设计模式中用到的主要是:策略模式,观察者模式.
Liskov替换原则(LSP)
描述: 父类的方法都要在子类里实现或者重写,不允许子类出现父类所没有定义的方法.
在设计模式中用到的主要是:组合模式.
依赖倒置原则(DIP)
描述:
A .高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
B .抽象不应该依赖于细节。细节应该依赖于抽象。
应用:要依赖抽象,不要依赖于具体。即针对接口编程,不要针对实现编程。
针对接口编程的意思是,应当使用接口和抽象类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。不要针对实现编程的意思就是说,不应当使用具体类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。
在设计模式中用到的主要是:模板模式,观察者模式.
通俗的话说:只能子类调用父,不能父类调用子类.
接口隔离原则(ISP)
描述:不要强迫客户依赖于它们不用的方法。
应用:如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。
结论:使用多个专门的接口比使用单一的接口要好。
最经典的实例:适配器中的对象适配器。
迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解, 不和陌生人说话。英文简写为: LoD.
门面模式就是迪米特法则的应用。
通俗的说:将用户不用的方法私有化,将不变的字段用final来修饰.
抽象类和接口的区别:
抽象类是一个类.
接口是一种行为,接口是类的一部分.
接口比抽象类的扩展性更好。
分享到:
相关推荐
而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 面向对象设计原则和设计模式也是...
包括:系统总体设计原则,业务应用支撑平台设计原则,共享交换区数据库设计原则,档案管理系统设计原则,总集成设计原则 ,系统及应用支撑环境设计原则,安全保障体系设计原则,应用支撑平台设计原则 ,等等数十种...
emi设计原则 emi设计原则 emi设计原则 emi设计原则emi设计原则
高速PCB EMC设计的47个原则二、PCB设计原则归纳 原则1:PCB时钟频率超过5MHZ或信号上升时间小于5ns,一般需要使用多层板设计。 原因:采用多层板设计信号回路面积能够得到很好的控制。 原则2:对于多层板,关键...
JAVA 24种设计模式介绍与JAVA6大设计原则
24种设计模式介绍与6大设计原则24种设计模式介绍与6大设计原则
详细描述全部(23种)设计模式与设计原则(6种)。 (一)设计原则包括: 1、开闭原则 2、里氏代换原则 3、依赖转换原则 4、接口隔离原则 5、合成/聚合复用原则 6、最少知识原则 (二)设计模式 1)工厂模式...
android 24种设计模式介绍与6大设计原则
11个重要的数据库设计原则
UML简介与面向对象的设计原则 建模的重要性? 如果你想搭一个狗窝,你备好木料、钉子和一些基本工具(如锤子、锯和卷尺) ,就可以开始工作。从制定一点初步的计划到完成一个满足适当功能的狗窝,你 可能不用别人...
面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则
面向对象的设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口分离原则 迪米特法则 合成复用原则
网页设计原则.txt格式 网页设计前的必读之物 设计原则是非常重要的!!!
EMI设计原则及电磁兼容设计原则有助于在电路板设计时候的抗干扰性能
oracle数据库索引设计原则. 数据库索引设计原则.
面向对象设计模式设计原则 自己下了看吧,,面向对象程序设计时候的 几个基本原则了
各种给力,软件设计原则,设计软件原则,原则设计软件,阮设计原则