软件设计七大原则

  • 开闭原则(Open Closed Principle,OCP):
    一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
    用抽象构建框架,用实现扩展细节
    优点:提高软件系统的可复用性和可维护性

  • 依赖倒置原则(Dependence Inversion Principle,DIP):高层模块不应该依赖低层模块,二者都应该依赖其抽象
    抽象不应该依赖细节;细节应该依赖抽象
    针对接口编程,不要针对实现编程
    优点:可以减少类间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险

  • 单一职责原则(Single Responsibility Principle,SRP):不要存在多于一个导致类变更的原因
    一个类/接口方法只负责一项职责
    优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险
    接口隔离原则(Interface Segregation Principle,ISP):用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
    一个类对一个类的依赖应该建立在最小的接口上
    建立单一接口,不要建立庞大臃肿的接口
    尽量细化接口,接口中的方法尽量少(注意适度原则,一定要适度)
    优点:符合我们常说的高内聚低耦合的设计思想
    从而使得类具有很好的可读性、可扩展性和可维护性。

  • 迪米特原则(Law of Demeter,LoD):
    一个对象应该对其他对象保持最少的了解。又叫最少知道原则
    尽量降低类与类之间的耦合
    强调只和朋友交流,不和陌生人说话
    朋友:
    出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,
    而出现在方法体内部的类不属于朋友类。
    优点:降低类之间的耦合

  • 李氏替换原则(Liskov Substitution Principle,LSP):继承必须确保超类所拥有的性质在子类中仍然成立
    里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理。里氏替换原是继承复用的基础,它反映了基类与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范。
    优点:加强程序的健壮性,同时变更时可以做到非常好的兼容性,提高程序的维护性、可扩展性,降低需求变更时引入的风险。

  • 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP):在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
    如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。
    优点:
    它维持了类的封装性。因为成分对象的内部细节是新对象看不见的,所以这种复用又称为“黑箱”复用。
    新旧类之间的耦合度低。这种复用所需的依赖较少,新对象存取成分对象的唯一方法是通过成分对象的接口。
    复用的灵活性高。这种复用可以在运行时动态进行,新对象可以动态地引用与成分对象类型相同的对象。

总结:
这些原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性和可维护性。

记忆口诀:访问加限制,函数要节俭,依赖不允许,动态加接口,父类要抽象,扩展不更改。

你可能感兴趣的:(软件设计七大原则)