编程中有五个最基本的设计原则,简称SOLID,具体含义如下:
S = 单一责任原则
O = 开闭原则
L = Liscov替换原则
I = 接口隔离原则
D = 依赖倒置原则
1、单一责任原则(SRP原则):
解析:该原则规定,每个类应该有一个责任,这个责任由类完全封装,它的所有服务应向责任狭义看齐,即一个类或一个模块有且只有一个理由去改变。
解决的问题:更有效的组织管理模块代码;松耦合;易于调试;易于修改。
2、 开闭原则:
解析:软件实体(类,模块,函数等)应该对扩展开发,对修改关闭。即意味着在基本层面上,可以扩展模块/类的行为而无需修改,当需求变化的时候,可以使用各种各样的方法制定功能来满足需求变更或者新需求。
解决的问题:不需要做任何修改即可以定义新的实现。
3、里氏替换(LSP原则) :
解析:使用基类引用的函数必须能够使用派生类而无需了解派生类,确保继承被正确使用。
解决的问题:保证类的正确继承关系;基于父类编写的单元测试代码可以成功运行子类。
4、接口隔离原则:
解析:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
解决的问题:接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
5、依赖倒置原则:
解析:高层次的模块不应该依赖于低层次的模块,而都应该依赖于抽象 。
解决的问题:使用低层级类会破环高层级代码;当低层级的类变化时,需要太多时间和代价来修改高层级代码;代码可复用性不高。