Java的设计六大原则

来源:互联网 发布:鹏博士数据客服电话 编辑:程序博客网 时间:2024/04/30 02:00

一、单一原则(SRPSingle Responsibility Principle

一个类,应当只有一个引起它变化的原因:即一个类应该只有一个职责。一个庞大的对象承担太多的责任,当客户端需要该对象的某一职责时,就不得不将所有的职责包括进来,从而造成冗余的代码。类的职责越少,则对象之间的依赖关系越少,耦合度就减弱,受其他对象的约束与牵制就越少,从而保证系统的扩展性。

单一职责的优点

  • 降低类的复杂性;
  • 提高类的可读性;
  • 提高代码的可维护性和复用性;
  • 降低因变更引起的风险。

二、里氏替换原则(LSPLiskov Substitution Principle

所有引用基类的地方必须能透明地使用其子类对象。清晰明确地说明只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道父类还是子类;但是反过来则不可以,有子类的地方,父类未必能适应。使用基类对象指向子类是允许的,但反过来,使用子类对象指向父类则违反了里氏替换原则,会出现错误。


里氏替换原则规范

  • 子类必须完全实现父类的方法;
  • 子类可以有自己的个性;
  • 覆盖或实现父类的方法时输入参数可以被放大;
  • 覆盖或实现父类的方法时输出结果可以被缩小。

三、依赖倒置原则(DIPDependence Inversion Principle

传统的过程性系统的设计办法前向高层次的依赖低层次的模块;抽象层次依赖于具体层次。倒置则将这个错误的依赖倒置过来,高层模块不应该依赖低层模块,两者都依赖其抽象;抽象不依赖细节;细节应该依赖抽象。

 

依赖倒置表现

  • 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生;
  • 接口或抽象类不依赖实现类;
  • 实现类依赖于抽象接口或抽象类。

依赖倒置原则优点

减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和维护性。依赖倒置原则是JavaBeanEJBCOM等组件设计模型背后的基本原则。

四、接口隔离原则

一个类对于另外一个类的依赖性应当是建立在最小的接口上;

一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。因此使用多个专门的接口比使用单一的总接口更好;

不应该强迫客户依赖于它不用的方法。接口属于客户,不属于它所在的类层次结构,即不要强迫客户使用它们不用的方法,否则这些客户就会面临由于这些不使用的方法的改变所带来改变。

五、迪米特法则(LKPLeast Knowledge Principle

只与你直接的朋友通信;不要跟陌生人说话;每一个软件单位对其他的 单位都只有最少的了解,这些了解仅局限于那些与本单位密切相关的软件单位。迪米特法则的核心观念就是累之间的解耦、弱耦合,只有弱耦合了以后,类的复用率才可以提高。


六、开闭原则

一个软件实体应当对扩展开放,对修改关闭。开闭原则提高复用性、可维护性、提高灵活性易于测试。

 

0 0
原创粉丝点击