设计原则
软件设计有六大设计原则分别是
单一职责原则
开放-封闭原则
依赖倒置原则
里氏替换原则
合成聚合复用原则
迪米特原则
单一职责原则
对于一个类而言,应该仅有一个引起它变化的原因,若一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会消弱或抑制类的完成其他职责的能力,这种耦合会导致脆弱的设计,比如:当变化发生时,设计会遭到意想不到的破坏
使用原则
软件设计真正做的许多内容,就是发现职责并把发现职责相互分离,而判断分离的方法就是如果能够想到多余一个的动机去改变一个类,类具有多于一个职责
开放封闭原则
软件实体(类、模块、函数)应该被设计成可以扩展,但是不能修改。面对需求,对程序改动是通过增加新代码,而不是更改现有代码完成。
表现特征
对于扩展是开放的(Open for Extension)
对于更改是封闭的(Closed for Moification)
使用原则
无论模块是多么的封闭,都会存在一些无法对之封闭的变化。尽然不可能完全封闭,设计人员就必须对设计的模块做出封闭和不封闭的选择,必须先预测出最可能发生的变化,构造抽象来隔离变化
希望在开发工作展开不久就知道可能发生的变化,查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难
该原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术的可维护性、可扩展性、复用性和灵活性
依赖倒置原则
抽象不应该依赖细节,细节依赖于抽象,针对接口编程,而不是针对实现编程
表现特征
高层模块不应该依赖底层模块,两者都应该依赖抽象
抽象不应该依赖于细节,细节应该依赖抽象
里氏替换原则
子类必须能够替换掉他们的父类型,一个软件实体如果适用的是一个父类的话,那么一定适用与其子类,且它察觉不出父类对象鱼子类对象的区别
合成聚合复用原则
聚合
表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
合成
一种强的“拥有”关系,体现严格的部分和整体关系,部分和整体的生命周期一致
迪米特原则
又LOD法则,或最少知道原则,若两个类不必彼此直接通信,则这两个类就不应当发生直接的相互作用,即若其中一个类需要调用另一个类的某个方法,可通过第三者转发调用。该原则本质是强调类之间的松耦合
前提条件
在类的结构设计上,每个类都应该尽量减低成员的访问权限
使用原则
类之间的耦合越弱,越有利于复用,一个处于弱耦合的类被修改,不会对有关系的类造成波及