
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
设计模式是程序员在学习软件开发的时候需要重点掌握的编程技术,而今天我们就一起来了解一下,设计模式指导原则都有哪些。
一、面向对象开发三大特性
1.封装:本质目的是将类实现者与使用者分离,从类内部来看,只包含自己的属性,尽量不依赖其他类,只暴露必要的行为。我们经常提到的高内聚,低耦合是对它佳的体现。耦合强度由高到低排序,泛化(is-a)=实现(like-a)>组合(part-a)>聚合(contains-a)>关联(has-a)>依赖(use-a)。
泛化,比较好理解,是类与类之间或者接口与接口之间的继承关系。
实现,也比较常见,类与接口之间的关系。
组合,是一种强关联,强调部分是整体不可分割的一部分,具有相同的生命周期。例如手是身体的一部分。
聚合,是一种组合稍弱的强关联,强调个体相对于集体的独立性,个体组成了集体,两者生命周期是独立的。例如独立个体的人,聚在一起,形成了各种团体组织。
关联,强调的是拥有关系,是实际存在的逻辑关联。例如夫妻双方,互相为对方的配偶,两者之间关系为关联关系。-依赖,是一种耦合度较低的关系,这种关系一般是偶然性的、临时性的。例如我们使用手机打游戏,我们依赖了手机,本质上我们跟手机是不存在逻辑联系的。
2.继承:本质目的是抽象,是类与类之间的联系,表示的是is-a的静态关系。继承同时也具备复用属性与行为的能力。
3.多态:本质目的是复用,但是只能复用行为,表示的是like-a的动态关系,在运行时体现出不同。
设计模式是基于对面向对象特性的充分理解,以及对类与对象之间相互关系的应用体现。
二、面向对象设计七大原则
设计实现一个系统时,我们一般先按功能划分好模块,以模块中核心类为起点,根据功能逐步向周边延展设计其它类。
设计模式在这个过程中可以帮助我们进行高质量的代码设计。但是模式是有限的,这些优秀的设计模式背后有没有什么通用的指导原则呢?
依赖倒置原则:面向接口编程,不要针对实现编程。实现意味着应对变化的能力下降,尽量延迟到调用时再具体化。
开闭原则:对扩展开放,对修改关闭。比较好理解,扩展新增引入的风险相对修改更可控一些。修改往往意味着,系统扩展性不够。
里氏替换原则:继承父类的目的是为了复用。高质量的继承关系,是衍生类可以完全替换掉基类,并且系统的行为不受到影响。如果子类不能完全替换父类,说明继承是不彻底的,复用的目的就没有达到。
单一职责原则:一个类应该只承担一个职责。承担的职责过多,职责之间可能会相互耦合。这里难的就是划分职责,职责必须恰如其分地表现实体的行为。比如用户账号可以修改基础信息,会员可以持有会员卡。如果不加以区分,只抽象一个用户实体包括所有的行为,显然是不合适的。
接口隔离原则:适度细化接口,接口的行为尽量少。分治的思想,降低复杂性,系统更可控。
迪米特法则:一个类对依赖的类知道的越少越好。本质目的是将复杂度控制在一定范围内。
组合/聚合复用原则:复用即可以通过继承实现,也可以通过组合/聚合实现。区别在于,继承表达is-a的逻辑关联,目的在描述结构,而不是复用。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。