6大基本设计原则

摘要:了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。所以在学习设计模式之前,很有必要对这些设计原则先做一下了解。
在这里插入图片描述

一、单一职责原则

参考:Liuwei-Sunny 面向对象设计原则之单一职责原则

定义:一个类只负责一个功能领域中的相应职责。

理解:不同的类具备不同的职责,各司其职。做系统设计是,如果发现有一个类拥有了两种职责,那么就要问一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分开,千万不要让一个类干的事情太多。

总结:一个类只承担一个职责

二、开放封闭原则

参考:Liuwei-Sunny 面向对象设计原则之开放封闭原则

定义:一个软件实体(可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类)应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

理解:类、模块、函数,可以去扩展,但不要去修改。如果要修改代码,尽量用继承或组合的方式来扩展类的功能,而不是直接修改类的代码。

总结:对软件实体的改动,最好用扩展而非修改的方式。

三、里氏替换原则

参考:Liuwei-Sunny 面向对象设计原则之里氏替换原则

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

理解:父类可被子类替换,但反之不一定成立。也就是说,代码中可以将父类全部替换为子类,程序不会出现异常,但反过来就不一定了。

总结:在继承类是,务必重写(override)父类中所有的方法,尤其需要注意父类的protected方法(它们往往是让你重写的),子类尽量不要暴露自己的public方法供外界调用。

四、依赖倒置原则

参考:Liuwei-Sunny 面向对象设计原则之依赖倒置原则

定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

理解:高层模块不应该依赖于底层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。应该面向接口编程,不该面向实现类编程。面向实现类编程相当于就事论事,那是正向依赖;面向接口编程,相当于透过现象看本质,抓住事务的共性,那就是反向依赖,即依赖倒置。

总结:面向接口编程,提取出事务的本质和共性。

五、接口隔离原则

参考:Liuwei-Sunny 面向对象设计原则之接口隔离原则

定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

理解:不要对外暴露没有实际意义的接口。也就是说,尽量保证接口的实用性。当需要对外暴露接口时,需要再三斟酌,若没必要对外提供就删了吧,因为一旦提供了就意味着,将来要多做一件事情,何苦给自己找事做呢。

总结:不要对外暴露没有实际意义的接口。

六、迪米特法则

参考:Liuwei-Sunny 面向对象设计原则之迪米特法则

定义:迪米特法则又称为最少知识原则,一个软件实体应当尽可能少地与其他实体发生相互作用。

理解:尽量减少对象之间的交互,从而减小类之间的耦合。在做系统设计时,不要让一个类依赖于太多其他的类,需尽量减小依赖关系,否则死都不知道怎么死的。

总结:一定要做到:低耦合、高内聚。

猜你喜欢

转载自blog.csdn.net/weixin_40022980/article/details/84346847
今日推荐