您的位置:首页 > 其它

设计模式01之设计原则

2013-11-04 10:59 330 查看
一、SRP单一职责原则(Single Responsibility Principle)

  核心思想:系统中每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成,即“高内聚,低耦合”;

  就一个类而言,应该仅有一个引起它变化的原因。

  注意:

  1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责。

  2、在没有变化的征兆的情况下应用SRP或其他原则是不明智的.(不能滥用,要确保职责会发生变化)。

  3、在需求实际发生的时候就应该应用SRP等原则重构代码。

  4、使用测试驱动开发(Junit)会迫使我们分离不合理的代码。

  5、若果测试不能分离,应该使用Facade或Proxy模式对代码进行重构。

二、LSP里氏替换原则(Liskov Substition Principle)

  核心思想:在任何父类出现的地方都可以用它的子类代替。即子类必须实现父类的所有功能,同一个继承体系的对象应该具有共同的行为特征。

  LSP描述了合理的继承应该具有以下四个方面:

  1、子类必须完全实现父类的方法。

  2、子类可以有自己的特性:即子类可以定义其他方法和属性。

  3、覆盖或者实现父类方法时输入参数可以被放大,即 子类的参数应该为父类参数的父类。

  4、覆盖或者实现父类方法时输出结果可以被缩小,即子类结果应该父类结果的子类。

三、DIP依赖注入原则(Dependence Inversion Principle)

  核心思想:要依赖抽象,不能依赖具体实现。即在应用程序中,所有类如果使用或依赖其他类,应该依赖其抽象类,而不是具体实现类。

  DIP要求开发人员应对接口进行编程,而不是对具体实现类进行编程。

  实现方法:

  1、通过构造函数传递依赖对象。

  2、通过setter方法传递依赖对象。

  3、接口声明实现依赖对象,即传递参数应为接口而不是具体实现。

四、ISP接口分离原则(Interface Segregation Principle)

  核心思想:不应强迫客户依赖他们并不需要的接口,即一个接口不需要提供太多行为,一个接口应该只提供一个对外的功能。

  注意:

  1、接口尽可能小,保证一个接口只服务于一个子模块或者业务逻辑。

  2、接口高内聚,接口申明的方法都与某个子模块相关,且为该模块所必须。

  3、要有限度使用,不能使接口太小,使得接口数量急剧增多。

五、LOD迪米特原则(Low of Demeter)

  核心思想:一个对象应该尽可能的对其他对象了解的少。降低耦合度。

  注意:

  1、在类的划分上,应该创建弱耦合的类。

  2、每一个类都应该尽可能降低类的访问权限。

  3、只要有可能,一个类应该设计成不变类(成员变量与方法不变)

  4、一个对象对其他对象的引用应该尽可能少。

  5、尽量降低类的访问权限。

  6、谨慎使用序列化功能。

  7、不要暴露类的成员变量,而是提供访问方法。

六、OCP开闭原则(Open for Extension,Closed for Modification)

  核心思想:一个对象对扩展开放,对修改关闭,即类的改动使通过增加代码实现的,而不是通过修改代码。(使用抽象和多态)

  将可变部分抽象出来,使抽象相对问题,实现部分多变。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: