软件设计中的六大原则

1. 单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。降低类的复杂性,类的职责清晰明确。比如数据职责和行为职责清晰明确。变更引起的风险减低,变更是必不可少的,如果接口的单一职责做的好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

2. 开放封闭原则:一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。意思是,在一个系统中或者模块中,对于扩展是开放的,对于修改时关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能。而实现开闭原则的关键就是抽象化。如设计模式中模板方法模式和观察者模式都是开闭原则的极好体现。

3. 里氏替换原则:任何基类可以出现的地方,子类也可以出现;这一思想表现为对继承机制的约束规范,只有子类能够替换其基类时,才能够保证系统在运行期内识别子类,这是保证继承复用的基础。如正方形是长方形是理解里氏替换原则的经典例子。

4. 接口隔离法则:客户端不应该依赖那些它不需要的接口。是指使用多个专门的接口,而不使用单一接口的总接口。每一个接口应该承担一种独立的角色,不多不少,不干不该干的事,该干的事都要干。

5. 依赖倒置原则:要依赖抽象,而不需要依赖具体的实现,具体而言就是高层模块不依赖于底层模块,二者共同依赖于抽象。抽象不依赖于具体,具体依赖于抽象。

6. 合成/聚合复用原则:要尽量使用对象组合,而不是继承关系达到软件复用的目的。就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量不要使用继承,组合/聚合可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承。

猜你喜欢

转载自blog.csdn.net/weixin_42294335/article/details/80697032