设计模式1-原则

1、单一职责原则 SRP

定义:应该有且仅有一个原因引起类的变更。

其实单一职责原则不仅适用于接口和类,也适用于方法。

2、里式替换原则 LSP

定义:所有引用基类的地方必须能透明地使用其子类对象。

在类中调用其他类时务必要使用父类或接口,否则就是违背了里式替换原则。

反之,有子类出现的地方未必可以替换为父类。

注意:如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。

特性:

(1)覆盖或者实现父类的方法时输入参数可以被放大。

比如父类中某个参数的入参为HashMap,子类的入参可以为Map

(2)覆写或实现父类的方法时输出结果可以被缩小

如果父类方法返回值为类型T,子类的相同方法可以是T类型,也可以是T的子类。

3、依赖倒置原则:

定义:

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

接口或抽象类不依赖于实现类;

实现类依赖接口或抽象类。

其实更精简的定义就是“面向接口编程”。

依赖的三种写法:

(1)构造函数传递依赖对象

(2)Setter方法传递依赖对象

(3)接口声明依赖对象

4、接口隔离原则:

定义:

接口尽量细化,同时接口中的方法尽量少。即尽量使用多个专门的接口。

提供给每个模块的都应该是单一接口,提供给几个模块就应该有几个接口,而不是建立一个庞大的臃肿的接口,容纳所有的客户端访问。

注意:

根据接口隔离原则拆分接口时,首先必须满足单一职责原则。

接口要高内聚:在接口中尽量少公布public方法,接口是对外的承诺,承诺越少对系统的开发越有利,变更的风险也就越少,同时也有利于降低成本。

5、迪米特法则 LoD:

定义:

一个对象应该对其他对象有最少的了解。

如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中。

迪米特法则的核心观念就是类间解耦,弱耦合。

6、开闭原则:

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

可以通过子类覆写的方式来替代直接修改某个类的方法。

一个项目的基本路径应该是这样:项目开发、重构、测试、投产、运维,其中重构可以对原有设计和代码进行修改,运维尽量减少对原有代码的修改,保持历史代码纯洁性。

猜你喜欢

转载自blog.csdn.net/sinat_27143551/article/details/80176787