设计原则
index:
1,单一职责原则
2,开关原则
3,里氏替换原则
4,依赖倒置原则
5,接口隔离原则
6,迪米特法则
1.单一职责原则(策略模式):一个类或者方法只能做一件事情,
应用:在构造对象时,将对象的不同职责分离到两个到多个类中,确保引起该类变化的原因只有一个。
例子:在我们的状态模式中,每个状态都有与之相对应的行为。这就很好的体现了单一职责原则。
优点:提高内聚,减少耦合度。
缺点:可能会导致资源文件过多,而管理不便。
2.(Open-close-principle开关原则)体现的模式:策略模式,装饰器模式,模板模式
对扩展是开放的,对修改是封闭的,即在不修改源码的情况下对其进行扩展,
我们的面向接口编程,这就有效的体现了这一原则。
比如说我们的一个项目需要进行增加一个功能。就增加一个实现类就可以。不需要修改它的源代码。
好处:提高了灵活性,可重用性,可维护性。
难点:OCP的关键是抽象父类,或者接口,创建正确的抽象发费时间和精力,也增加了软件设计的复杂性。
正确的做法:只对程序中频繁变化的做出抽象。3.里氏替换原则(LSP)(工厂模式)
定义:用子类去替换父类。即凡是父类能够出现的地方,子类就一定能够出现,反之则不成立。
工厂模式就很好的实现了这一原则,比如说dao层,父类并不知道是生成那一个子类的对象。
而我们的子类是知道它实现的是那个接口。
这样子类替换就非常的容易。可以在无需修改的情况下进行修改。
LSP使OCP成为可能的主要原则之一,
4.依赖倒置原则:(模板模式)
定义:高层模板不依赖于底层模板,它们都应该依赖于抽象。
抽象不应该依赖于细节,细节应该依赖于抽象。
也就是说它父类不应该依赖子类的东西。
例子:拿我们项目中来说,比如说dao,和dao的实现,我们dao层不应该知道dao实现的具体的操作。
如果dao层需要修改的话,那么还会影响到dao的实现,这样耦合度就非常的高。
5.接口隔离原则:(观察者模式)定义:不要强迫客户依赖于它们不用的方法。
让一个类对另外一个类的依赖性应当是建立在最小的接口上的。
例子:如果我们一个类需要一些方法,避免实现方法过多的接口。
作用:避免接口污染
一个接口代表一个角色,不应当将不同的角色都交给一个接口。
6.迪米特原则 (体现了门面模式)定义:又叫最少知识原则,一个对象对其他对象应该有尽可能少的了解,这是一个送耦合的的法则。
例子:我们在程序中通常把能私有化的属性,方法,都要尽量的私有化。
这样我们修改一些模板对其他模板的影响就少些,使代码也更加安全。
我们可以使用门面模式来实现这一原则,门面模式就是隐藏子系统的复杂性。与客户程序打交道
只有一个类而已。
缺点:在系统中造出大量的小方法,管理不要方便。