设计模式的概念以及面向对象设计原则

设计模式的定义
设计模式(Design Pattern)是一套面向对象的代码设计经验总结。
设计模式是一种思想,也是一种技术。
一种设计模式就是一种解决实际问题的方案。
每一种设计模式虽然有既定的结构图和基本程序代码,但是应该不局限于此,要理解其精髓而熟练应用。

OOP的六大设计原则

单一职责原则
定义:对于一个类,应该只有一个引起它变化的原因。
|-----降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单。
|-----提高类的可读性,提高系统的可维护性。

里氏代换原则
定义:子类型必须能够替换掉它们的父类型。
|-----反映了子类和父类的关系
|-----如果一个软件实体使用的是一个父类,那么就肯定适用于其子类,并且该软件实体察觉不出父类对象和子类对象的区别。
|-----正是由于父类型的可替换性,才使得父类类型的模块在无需修改的情况下,就可以通过使用不同的子类得到扩展。
|-----里氏替换原则是对实现抽象化的具体步骤的规范。

开放-封闭原则
定义:程序的实体对象(模块、类、函数等)应该可以进行扩展,但不应该可以修改。
|-----开闭原则是面向对象开发中所有设计原则的核心。
|-----对已有程序的扩展优先采用添加新的类或者模块的方式来进行,而不是通过修改现有的类或者模块来进行。
|-----软件设计本身所追求的目标就是封装变化、降低耦合,OCP是对这一目标的最直接的体现。

依赖倒转原则
定义:程序的高层模块不应该依赖底层模块,但两者都应依赖于抽象;抽象不应该依赖于具体,而细节应该依赖于抽象。
|-----即要针对接口编程,而不是针对实现编程。
|-----依赖倒转原则的本质是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,从而实现模块间的松耦合。
|-----简单来将,依赖倒转原则就是要求客户端应该依赖于抽象耦合。传统的过程性系统设计倾向于使高层次模块依赖于低层次模块,抽象的层次依赖于具体的层次。现在要将这个错误的依赖关系“倒转”过来。
|-----使用这个原则,意味着上层类不直接使用底层类,他们使用接口作为抽象层。

合成/聚合复用原则
定义:尽量不适用类继承,而尽量使用合成/聚合。
|-----聚合表示弱的拥有关系,合成则表达强的拥有关系,体现的是严格的整体与部分之间的关系。

迪米特法则
定义:如果两个类之间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法,可以通过第三方来转发这个调用。
|-----talk only to your immediate friends.
|-----强调的前提是在类的结构设计上,每一个类都要尽量降低成员的访问权限,类自己包装好自己的private状态,不需要让别的类知道的属性or行为就不公开。
|-----迪米特法则的根本思想,是强调类之间的尽量实现松散耦合。类之间的耦合越弱,越有利于复用。

 

posted @ 2018-05-02 09:44  爆炸的果核  阅读(210)  评论(0编辑  收藏  举报