摘要:里氏置换原则(Liskov Substitution Principle),简称LSP定义:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.所有引用基类的地方必须能够透明的使用其子类对象。也就是说,只要父类出现的地方子类就能够出现,而且替换为子类不会产生任何错误或异常。但是反过来,子类出现的地方,替换为父类就可能出现问题了。这个原则是为良好的继承定义一个规范,简单的讲,有4层含义:一、子类必须完全
阅读全文
摘要:首先看看接口隔离原则的定义,有两种定义第一种:Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该强行以来它不需要的接口)第二种:The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上)而这里的接口,却不仅仅指的是通过interface关键字定义的接口,接口分为2种:1、对象接口(Object Interfac
阅读全文
摘要:依赖倒置原则(Dependence Inversion Principle),简称DIP定义High level modules should depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.即1、高层模块不应该依赖低层模块,两者都应该依赖于抽象(抽象类或接口)2、抽象(抽象类或接口)不应该依赖于细节(具体实现类)3、细节(具体实现类)应
阅读全文
摘要:迪米特法则(Law of emeter)定义:一个对象应该对其他对象了解最少迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。形象一点的比喻类似于:监狱内的犯人是不应该跟外面的人接触的,当然或许会有探亲的。这里的监狱就是类,里面的犯人就是类内部的信息,而监狱里的狱警就相当于迪米特法则的执行者① 在类的划分上,应该创建有弱耦合的类;② 在类的结构设计上,每一个类都应当尽量降低成员的访问权限;③ 在类的设计上,只要有可能,一个类应当设计成不变类;④ 在对其他类的引用上,一个对象对其它对象的引用应当降到最低;⑤ 尽量降低类的访问权限;⑥ 谨慎使用序列化功能;⑦ 不要暴
阅读全文
摘要:依赖倒转原则抽象不应该依赖于细节,细节应当依赖于抽象。 要针对接口编程,而不是针对实现编程。 传递参数时,或者在组合聚合关系中,尽量引用层次高的类(或接口)。 主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必再弄一个抽象类做它的父类,这样有画蛇添足的感觉。 优点: 系统扩展灵活。 缺点: 需要大量的类。
阅读全文
摘要:“开-闭”原则(Open-Closed principle, OCP)一个软件实体应当对扩展开放,对修改关闭。Software entities should be open for extension, but closed for modification.在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。“可变性的封装原则”从工程的角度讲解了如何实现“开-闭”原则。 “可变性的封装原则”意味着两点:1.一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。继承应当被看做是封装变化的方法,而不应当被认为是从一般的对象生成特殊的对象方法。2.一种可变性不应当与另
阅读全文