面向对象设计原则

一,单一职责原则(SRP)

1,描述:对一个类而言,应仅有一个引起它变化的原因。通俗地说就是一个类只做一件事。

2,好处:提高内聚,降低耦合。

3,应用模式:命令模式和状态模式、工厂模式、策略模式就是单一职责原则的应用,解耦了发送者与接受者的联系,使系统的结构清晰,利于扩展与维护。

二,开放-关闭原则(OCP)

1,描述:对于扩展是开放的,意味着模块的行为和功能是可扩展的。对于更改是封闭的,当对模块进行扩展时,无需改动模块源代码。对于基类是封闭的,基类中的方法一旦定义下来,就不能随便更改,对于子类是开放的,子类的功能扩展不影响整个模块,也就是说子类功能的扩展不影响整个系统的架构。

2,好处:提高系统灵活性、可扩展性、可重用性。

3,状态模式和策略模式就是开放-关闭原则的应用。

三,Liskov替换原则(LSP)

1,描述:如果一个软件实体使用的是基类的话那么也一定适用于子类。通俗地说就是父类能访问的子类一定能访问。

2,好处:提高系统灵活性。

3,应用模式:模板模式

四,依赖倒置原则(DIP)

1,描述:高层模块不依赖于低层模块,两者应依赖于抽象;抽象不依赖细节,细节依赖于抽象。这也正体现了面向接口编程的思想,通过高级接口来进行交互,而高级接口并不依赖于低层实现细节。就像MVC框架模式,任何一层都不能依赖于某一层的技术实现。

2,好处:提高系统扩展性。

3,应用模式:状态模式和策略模式、模板模式、代理模式以及抽象工厂模式

五,接口隔离原则(ISP)

1,描述:不要强迫客户依赖它们不用的方法。一个类对另一个类的依赖性应当建立在最小的接口上,使用多个专门的接口比使用单一接口要好。我觉得这也体现了多继承的好处。

2,好处:避免了造成接口污染

3,应用模式:适配器模式

六,迪米特法则(LOD)

1,描述:简单的说“不要和陌生人说话”字段、方法尽量私有,尽量降低成员的访问权限。

2,好处:提高扩展性,当我们要删除或修改一个方法或字段时可以把对系统的影响降到最低。

3,应用模式:门面模式。

相关推荐