软件设计原则
软件的设计原则是设计模式的内核,所有的设计模式都是围绕着软件设计原则展开,将网上设计原则的内容做一个相应的总结,设计原则有以下几点:
-
单一职责原则: 一个类或者模块应当只负责一项任务或功能,换而言之,就一个类而言,应该只有一个引起它变化的原因。 例如一个类负责了输入数据、处理数据、保存数据,对于这个类而言就有三个变化的原因。
-
开闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。 应当在不修改源码的情况下添加新功能,从而提高软件的灵活性、可维护性和可拓展性。通常实现开闭原则可以利用一些设计模式来实现。
-
里氏替换原则:任何父类(基类)可以出现的地方,子类(派生类)也一样可以出现。 子类(派生类)对父类(基类)进行拓展,但不能改变父类(基类)原有的功能,保证继承的稳定性和正确性,例如一个函数可以接受父类(基类)对象,那么也可以接受子类(派生类)对象,接收子类(派生类)对象时并不会影响到函数逻辑和结果。
-
接口隔离原则:客户不应该依赖它们用不到的方法,只给每个客户它们所需要的接口 ,避免客户端实现一些无用的方法,提高接口的内聚和灵活,如果一个接口实现的过于臃肿可以拆分成多个,每一个接口服务于一个子模块。
-
依赖倒置原则:高层模块不应该依赖于底层模块,两者都应该依赖于抽象;抽象不应该依赖细节,细节应该依赖抽象。 可以降低类于类之间的耦合性,提高系统的稳定性、可读性和可维护性,并且能够降低修改程序所造成的风险。
-
迪米特法则:一个软件实体尽可能少的与其他实体发送相互作用。 降低系统的负责度,提高模块的内聚性,降低模块之间的耦合性。
-
合成复用原则 :在软件复用时,尽量先使用组合或者聚合等关联关系来实现,其次才考虑继承关系来实现。 增加系统的灵活性,降低类与类之间的耦合度,提高代码的复用。
在许多时候一个类的设计是没办法遵循说有的原则,设计模式也是如此,设计模式本身就是围绕着设计原则展开的,例如抽象工厂模式,它所遵循的设计原则有单一职责原则和开闭原则,因此可以搭配其他的设计模式一起来完成一个模块的设计。