一、单一职责原则

    就一个类而言,应该仅有一个引起它变化的原因。

    如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱他的设计,当变化发生时,设计会遭受到意想不到的破坏;软件设计真正要做的许多内容就是发现职责并把那些职责相互分离。

二、开放-封闭原则

    软件实体应该可以扩展,但不可修改。该原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的可维护、可扩展、可复用、灵活性好。

    设计人员必须对于他设计的模块应该对哪种变化封闭做出选择,必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。最初编写程序时假设变化不会发生,当变化发生时,就创建抽象来隔离以后发生的同类变化,拒绝不成熟的抽象。

三、里氏代换原则

    子类型必须能够替换掉它们的父类型。由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

四、依赖倒转原则

    高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。

    要针对接口编程,不要针对实现编程。该原则可以说是面向对象设计的标志,编写时考虑的是如何对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口。

五、迪迷特原则(最少知识原则)

    如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用;如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

    该原则其根本思想,是强调了类之间的松耦合;类之间的耦合越弱,越利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。在类的结构设计上,每一个类都应当尽量降低成员的访问权限。

六、合成/聚合复用原则

    尽量使用合成/聚合,尽量不要使用类继承。

    聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。

    优先使用对象的合成/聚合将有助于你保持每个类被封装,并被击中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

七、UML例图

‘+’表示public,‘-’表示private,‘#’表示protected;

接口顶端有《interface》显示,只有两行;同时另一个表示方法为棒棒糖表示法;

聚合表示一种弱的’拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;

合成是一种强的’拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样;

继承关系

实现接口

关联关系

聚合关系

合成关系

依赖关系

空心三角形+实线

空心三角形+虚线

实线箭头

空心菱形+实线箭头

实心菱形+实线箭头

虚线箭头

 

五、UML类图和六大原则-----《大话设计模式》的更多相关文章

  1. 设计模式学习(二):面向对象设计原则与UML类图

    一.UML类图和面向对象设计原则简介 在学习设计模式之前,需要找我一些预备知识,主要包括UML类图和面向对象设计原则. UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设 ...

  2. 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式

    目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...

  3. 23种常用设计模式的UML类图

    23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...

  4. 转载:23种常用设计模式的UML类图

    转载至:https://www.cnblogs.com/zytrue/p/8484806.html 23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源 ...

  5. 设计模式之UML类图六大关系辨析【2】

    六大关系:继承(extends).实现(Realization).依赖(use-a).关联(association).聚合(has-a).组合(强聚合)(Composition). 类与类之间的强弱关 ...

  6. UML类图介绍&类的六大关系

    UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...

  7. UML类图五种关系与代码的对应关系

    转: UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系 ...

  8. 五分钟读懂UML类图

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  9. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

随机推荐

  1. 在WinDBG中查看调用栈的命令

    命令 ========== k k命令显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. kp 5 显示调用栈中前5个函数以及他们的参数. kb 5 显示调用栈 ...

  2. This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended

    VS2005转换成VS2010时出现的问题: This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x05 ...

  3. ComboBox的真实值和显示值

    一.类型 /// <summary> /// 下拉框值类型 /// </summary> public class TextAndValue { /// <summary ...

  4. Qt工程pro文件的简单配置(尤其是第三方头文件和库)

    Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以”#”开始的行 ...

  5. 创建calico网络报错client response is invalid json

    使用docker创建calico网络失败. # docker network create --driver calico --ipam-driver calico-ipam testcalico E ...

  6. Cobbler安装配置简单使用

    安装Cobbler [root@linux-node3 ~]# yum -y install epel-release [root@linux-node3 ~]# yum -y install cob ...

  7. Lecture 0 --基本说明

    Abstract:本章所记录的知识是后面章节需要的前导知识,请务必仔细读本章,理解涉及的知识点,方便后面章节的学习.本次数据结构笔记主要参考殷人昆的<数据结构(C语言描述)>这本书,需要的 ...

  8. P-Function

    题意: 对于集合 $S = {1, 2, ...., n}$ , 定义函数 $F(x) = y, x, y$ 属于 $S$,对于任何 $x$ 属于 $S$, 有 $F(F...F(x)) = x$, ...

  9. c/c++面试23-29

    23 一般引用的用法 (1)代码 #include <iostream> #include <string> using namespace std; int main(int ...

  10. UVa 1631 Locker (DP)

    题意:有一个 n 位密码锁,每位都是0-9,可以循环旋转.同时可以让1-3个相邻数字进行旋转一个,给定初始状态和目状态,问你最少要转多少次. 析:很明显的一个DP题.dp[i][j][k] 表示前 i ...