设计模式6大规则

来源:互联网 发布:jdk 8u60 linux x32 编辑:程序博客网 时间:2024/05/29 17:52

一、开闭原则(Open Close Principle)

  开闭原则定义:software entities like class,moudles and functions should be open for extension but closed for modifications(一个软件实体如类、模块和函数应该对扩展开发,对修改关闭)
  开闭原则是java世界里最基础的设计原则,他能指导我们建立一个稳定的、灵活的系统。
  
  开闭原则的重要性:
    1.开闭原则对测试的影响
    2.开闭原则可以提高复用性
    3.开闭原则可以提高可维护性
    4.面向对象的开发要求

  如何使用开闭原则:
  能用抽象类的别用具体类,能用接口的别用抽象类。总之一句:尽量面向接口编程。
  
二、单一职责(Single Responsibility Principle)

  单一职责简称SRP,SRP原文解释为:There should nerver be more than one reason for a class to change,翻译成中文就是:应该有且只有一个原因引起类的改变。换句话说就是一个类,一个方法只应该做一件事情。
  单一职责的好处:
    1.类的复杂性降低,实现什么职责都有明确的清晰定义。
    2.可读性高。
    3.可维护性高
    4.变更引起的风险降低,变更是必不可少的,如果接口单一职责做的好,一个接口修改只对相应的实现类有影响,对其它接口没有影响。
  
三、里氏替换原则(Liskov Substitution Principle)

  里氏替换原则定义:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.(所有的引用父类的地方必须能透明地使用其他子类的对象)换句话说就是只要父类出现的地方子类就可以实现,而且替代为子类也不会产生任何错误或异常,使用者根本就不知道是父类还是子类。
  
  里氏替换原则主要包括以下几部分:
    1.子类必须完全实现父类的方法
    2.子类可以有自己的行为外观(属性,方法)
    3.覆盖或者实现父类的方法时输入的参数可以被放大(父类方法参数类型是HashMap时子类
  参数可以是HashMap,也可以是Map)。
    4.覆盖或者实现父类的方法时输出结果可以被缩小(父类方法的返回值是Map时,子类的返回
  值可以是Map也可以是HashMap)
    
四、依赖倒置原则(Dependence Inversion Principle)

  依赖倒置原则定义:High level moudles should not depend upon low level moudles. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions翻译过来就是高层模块不应该依赖低层模块,两者都应该依赖其抽象;
抽象不应该依赖细节;细节应该依赖抽象。
  依赖倒置原则在java语言中的表达就是:
    1.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的;
    2.接口或抽象类不依赖于实现类
    3.实现类依赖接口或者抽象类
  总结一句话就是面向接口编程

五、接口隔离原则(Interface-Segregation Principle)

  接口隔离原则定义:1.Clients should not be force to depend upon interface that they donot use.(客户端不应该依赖他不需要的接口)2.The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上。)
  总的来说就是创建接口时应该建立单一接口,不要让接口有庞大,尽量为调用者创建独立专用的接口。
  
六、迪米特法则(Low of Demeter)
  迪米特法则也称为最少知识原则,就是一个对象应该对其他对象有最少的了解,通俗的说就是一个类应该对自己需要耦合或调用的类知道的最少,你的内部实现是如何复杂都和我没关系,那是你自己的事情。
  迪米特法则对类的低耦合提出了明确的要求,主要包括以下方面:
    1.只和朋友打交道(只耦合该耦合的类)
    2.朋友间也是有距离的(减少不该public的方法,向外提供一个简洁的访问)
    3.是自己就是自己的(如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中。)

0 0
原创粉丝点击