软件设计的七大原则

1.开闭原则
?个软件实体,如类,模块和函数应该对扩展开放,对修改关闭 。所谓的开闭,是对扩展和修改两个?为的?
个原则 。需要强调的是利?抽象构建框架,?实现扩展细节 。
开闭原则是?向对象 基础的设计原则,它指导我们如何建立灵活稳定的系统 。
2.依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,?层模块不应该依赖底层模块,?者都应该依赖其抽象 。抽象不应该依赖细节;细节应该依赖抽象 。通过依赖倒置,可以减少类与类之间的耦合性,提?系统的稳定性,提?代码的 可读性和可维护性,并能够降低修改程序所造成的?险 。
3.单?职责原则
假设我们有?个Class负责两个职责,?旦发?需求变更,修改其中?个职责的逻辑代码,有可能会导致另?个职责的功能发?故障 。这样?来,这个Class存在两个导致类变更的原因 。
在设计的时候将类尽可能拆分,保证?个类只负责实现?个功能,降低代码的复杂度,在需求变更时,减?维护更改的影响范围,,提?代码维护性 。
4.接?隔离原则
接?隔离原则(Interface Segregation Principle, ISP)是指?多个专?的接?,?不使?单?的总接?,客户端不应该依赖它不需要的接? 。
接?隔离原则符合我们常说的?内聚低耦合的设计思想,从?使得类具有很好的可读性,可扩展性和可维护性 。我们在设计接?的时候,要多花时间去思考,要考虑业务模型,包括以后有可能发?变更的地?还要做?些预判 。所以,对于抽象,对业务模型的理解 是非常重要的 。
5.迪米特法则
迪米特原则(Law of Demeter LoD)是指?个对象应该对其他对象保持 少的了解,?叫 少知道原则(LeastKnowledge Principle,LKP),尽量降低类与类之间的耦合 。比如物流Service需要查询订单的状态,不?在物流Service中增加接?,?是在订单Service中增加?个查询订单状态的接? 。
6.??替换原则
?个软件实体如果适??个?类的话,那?定是适?于其?类,所有引??类的地?必须能透明地使?其?类的对 象,?类对象能够替换?类对象,?程序逻辑不变 。根据这个理解,我们总结?下:引申含义:?类可以扩展?类的功能,但不能改变?类原有的功能 。
??替换原则是对??类关系的描述,即?类可以完全替代?类,但是?类不能替代?类 。
7.合成复?原则
合成复?原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使?对象组 合(has-a)/聚合(contanis-a),?不是继承关系达到软件复?的?的 。可以使系统更加灵 活,降低类与类之间的耦合度,?个类的变化对其他类造成的影响相对较少 。继承我们叫做?箱复?,相当于把所有的实现细节暴露给?类 。组合/聚合也称之为?箱复?,对类以外的对象是?法获取到实现细节的 。
总结
设计原则包括: 开闭原则/单?原则/依赖倒置原则/接?隔离原则/迪米特原则/??替换原则/合成复?原则
1.对修改关闭,对扩展开放;
2.单?职责,?个接?/类只做?件事,降低类和接?复杂度,提?代码维护性;
3.采?接?和抽象类来应对变化,通过抽象来定义框架,使?实现来扩展细节,应对需求变化;
4.?类可以替换?类,?类不能替换?类;
5.组合优于继承,降低类与类之间的耦合;
6.接?定义应该尽量细化,尽量避免?个接?实现多个功能的情况

【软件设计的七大原则】


    推荐阅读