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

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

OOP的六大设计原则

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/bigbigbigo/p/8978784.html

时间: 2024-11-05 18:30:08

设计模式的概念以及面向对象设计原则的相关文章

设计模式2 面向对象设计原则

面向对象设计原则  原则的目的 面向对象设计原创表  单一职责原则案例 开闭原则 案例 依赖倒转原则 案例 面向对象设计原则  对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护性的复用是以设计原则为基础的.每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平.  面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含

【小话设计模式】面向对象设计原则

1.单一职责原则 单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成.英文缩写SRP  Single Responsibility Principle 单一职责原则-->"高内聚,低耦合",每个类应该只有一个职责,此外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 优点: 可以降低类的复杂度: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低. 2.里氏替换原则 里氏

面向对象设计原则,设计模式

面向对象设计原则之一:单一职责原则 面向对象设计原则之二:开放封闭原则 面向对象设计原则之三:里氏替换原则 面向对象设计原则之四:依赖倒置原则 面向对象设计原则之五:迪米特法则 Java之美[从菜鸟到高手演变]之设计模式 Java之美[从菜鸟到高手演变]之设计模式二

C++ 设计模式2 (面向对象设计原则)

1. 变化是复用的天敌! 面向对象设计的最大优势在于 : 抵御变化 2. 重新认识面向对象 理解隔离变化: 从宏观层面来看,面向对象的构建方式更能适应软件的变化, 能将变化所带来的影响减为最小. 各司其职: 从微观层面来看,面向对象的方式更强调各个类的”责任“ (代码示例中,各个类型图形,各自实现自己的draw) 由于需求变化导致的新增类型不应该影响原来类型的实现 ——各负其责. 对象是什么? 从语言实现的层面,对象是封装了代码和数据. 从规格层面讲,对象是一系列可被使用的公共接口. 从概念层面

UML类图与面向对象设计原则—设计模式01

1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模式,如今打算系统的学习.学习以书<设计模式的艺术--软件开发人员内功修炼之道/刘伟著>为主.       所谓设计模式,即是前人对某类相似问题的抽象给出的解决方案.书中给出了23(Gof)+1(简单工厂模式)种设计模式.每种模式的学习将关注以下几点:名称(Name),问题(Problem),解决方

设计模式和面向对象设计原则

1:策略模式 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 封装变化,多用组合少用继承,针对接口编程而不是针对实现编程. 2:观察者模式 观察者模式定义了对象一对多的依赖关系,这样一来,当一个对象状态改变,依赖它的所有的对象都会收到通知并自动更新. 为对象之间的松耦合设计而努力. 3:模板方法模式 模板方法模式在一个方法中定义了算法的骨架,而讲一些步骤延迟到子类中实线,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤.

设计模式(三)面向对象设计原则之单一职责原则

引用自:http://blog.csdn.net/lovelion  作者:刘伟 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责, 或者可以定义为:就一个类而言,应该只有一个引起它变化的原因. 单一职责原则告诉我们:一个类不能太"累"!在软件系统中,一个类(大到模块,小到方法)承担的 职责越多,它被复用的可能性就越小,而

设计模式-面向对象设计原则

七种常用的面向对象设计原则 单一职责原则(Single Responsibility Principle,SRP): 一个类只负责一个功能领域中的相应职责. 开闭原则(Open-Close Principle,OCP): 软件实体应对外扩展开放,而对修改关闭. 里氏代换原则(Liskov Substitution Principle,LSP): 所有引用基类对象的地方能够透明的使用其子类的对象. 依赖倒换原则(Dependence Inversion Principle,DIP): 抽样不应该依

OOAD之面向对象设计原则

学习这个设计模式 真的觉得很抽象,只有自己多多的领会! 在很多时候,很多的知识都会觉得讲起来是很矛盾的. 本章目标 1 掌握内聚度和耦合度的概念 2 掌握面向对象设计原则 (一)如何衡量软件设计的质量 内聚度:表示一个应用程序的单个单元所负责的任务数量和多样性.内聚与单个类或者单个方法单元相关.(在我自己的理解就是:在一个类中完成自己所有的任务,这些任务都在自己的类中.) 耦合度:耦合度表示类之间关系的紧密程度.耦合度决定了变更一个应用程序的容易程度.在紧密耦合的类结构中,更改一个类会导致其它的