要看懂设计模式,你需要懂类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些UML的必要知识,以便你学习设计模式。

属性、操作

下图简单介绍类的属性和操作。 类有属性(attributes)、操作(operations),属性和操作统称特性(features)。

下载 (40.26 KB)

7 分钟前

下图进一步详细介绍类图细节,包括:属性和操作的作用域、属性类型、参数类型、方法返回值类型等。

下载 (74.42 KB)

12 分钟前

接口、枚举

下载 (56.7 KB)

12 分钟前

抽象类

下载 (61.72 KB)

12 分钟前

继承关系

类B继承类A,如下图:

下载 (7.04 KB)

12 分钟前

抽象类被继承,如下图:

下载 (9.55 KB)

12 分钟前

实现关系

实现是指某接口被实现,而不是某类被实例化。 实现如下图:

下载 (10.46 KB)

12 分钟前

依赖关系

先看图:

下载 (8.67 KB)

12 分钟前

B依赖A,表示如果A的接口发生变化,B也需要相应地改变。

依赖的常见情况有:

1. B调用了A的方法。

2. B的方法中,使用了A为参数。

3. B的方法返回值类型为A。

引用关系

先看图:

下载 (10.88 KB)

12 分钟前

Class1有箭头指向Class2,表示Class1中含有Class2的引用。 而上图进一步明确了具体的引用方式,就是:Class1中的私有变量m_Class2的类型是Class2。

你可能会问:某类保持另外一个类的引用,一般都会调用另外一个类的方法,那么它们的关系不应该是依赖关系吗?引用关系与依赖关系有什么区别?

这个问题很好!某些情况下,某类保持另外一个类的引用,但该类不调用另外一个类的方法,而是将另外一个类的引用暴露出来,供外部调用。

例如Class1有某一属性Class2,访问该属性可获得Class2的实例:

class1 = new Class1( );

class2 = class1.Class2;

Class1虽然有Class2的引用,但它自身不调用Class2的方法,而是让外部通过熟悉获得Class2的实例。

不过很多资料及书籍对“依赖关系”及“引用关系”的解释并不到位,不同资料之间的解释甚至是互斥的。而我见到的大部分设计模式的类图都不会区分“依赖关系”和“引用关系”,大部分设计模式的类图都会画成“引用关系”,本书后面的类图也将会不区别这两者,全部画成“引用关系”。

“包含”关系

我将“包含”关系分为“弱包含”和“强包含”,下图上面的是“弱包含”,下图下面的是“强包含”,此图说明了两种包含的区别。

下载 (91.68 KB)

12 分钟前

“弱包含”和“强包含”只是我的一种俗称,学术的叫法是“聚合”和“组合”,一般资料可能会搞到你很晕,下图希望可以进一步解释清楚。

下载 (74.47 KB)

12 分钟前

设计模式的类图中不少地方会用到“包含”关系,一些资料画成“强包含”,一些资料画成“弱包含”。我个人将“强包含”看成是“弱包含”的一种特例,大部分情况下我先画成“弱包含”,有需要才转化为“强包含”。本书中的包含关系,全部都画成“弱包含”。

对象图

类实例化后就是对象(Object),表示这些对象及对象之间关系的图就是对象图。有时候需要用对象图来表示设计模式。

对象图的例子:

请看下一文……

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

www.umlonline.org创办人

1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识的更多相关文章

  1. 《HeadFirst设计模式》读后感——对学习设计模式的一些想法

    最近看完了<HeadFirst设计模式>,GOF的<设计模式——可复用面向对象软件的基础>的创建型模式也读完了,经历了从一无所知到茅塞顿开再到充满迷惑的过程. 不得不说< ...

  2. [Python设计模式] 第8章 学习雷锋好榜样——工厂方法模式

    github地址:https://github.com/cheesezh/python_design_patterns 简单工厂模式 v.s. 工厂方法模式 以简单计算器为例,对比一下简单工厂模式和工 ...

  3. 第十二章 学习 shell脚本之前的基础知识

    http://www.92csz.com/study/linux/12.htm [什么是shell] 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和 ...

  4. 小菜学习设计模式(五)—控制反转(Ioc)

    写在前面 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Metho ...

  5. 小菜学习设计模式(四)—原型(Prototype)模式

    前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...

  6. 小菜学习设计模式(三)—工厂方法(Factory Method)模式

    前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...

  7. 小菜学习设计模式(二)—单例(Singleton)模式

    前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...

  8. 小菜学习设计模式(一)—模板方法(Template)模式

    前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...

  9. JAVA设计模式总结之23种设计模式

    上一篇总结了设计模式的六大原则<JAVA设计模式总结之六大设计原则>,这一篇,正式进入到介绍23种设计模式的归纳总结. 一.什么是设计模式                         ...

随机推荐

  1. LINQ的Expression与delegate表达式

    Linq的delegate表达式,Insus.NET觉得它封装得好,让开发时简化了很多代码,而且容易阅读与检索. 比如,我们需要计算优惠给客户金额,打85%折,可以这样写: using System; ...

  2. visual C++ 项目和解决方案的区别

    项目:         项目是构成某个程序的全部组件的容器,该程序可能是控制台程序.基于窗口的程序或某种别的程序.程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成.某个 ...

  3. 孙鑫MFC学习笔记10:画图/贴图

    1.SetPixel在指定点设置像素 2.虚线.点线宽度必须为1 3.CColorDialog创建颜色对话框 4.需要设置CC_RGBINIT标志才能设置颜色对话框的默认颜色 5.CC_FULLOPE ...

  4. MySQL的Incorrect string value错误

    用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...

  5. MySQL Error Handling in Stored Procedures

    http://www.mysqltutorial.org/mysql-error-handling-in-stored-procedures/ mysql存储过程中的异常处理   定义异常捕获类型及处 ...

  6. Java关于Properties用法的总结(一)

    最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入txt文件.因为文件的读写路径可能需要随时改动,所以写死或者写成静态变量都不方便,就考虑使用配置文件,这里总结些配置 ...

  7. android实现两个activity数据交互

    android如何实现两个Activity数据交互?主要是根据Intent的携带功能,intent可以携带很多信息,比如Bundle,URI甚至对象(此时要序列化,并且对象里面的成员变量如果是对象,也 ...

  8. css知多少(2)——学习css的思路

    两周之前写过该系列的第一篇,其实当时只是一个想法,这段时间迟迟未更新,是在思考一个解决过程.现在初有成效,就开更吧. 1. 一个段子 开题不必太严肃,写博客也不像写书,像聊天似的写东西是最好的表达方式 ...

  9. json 对象 数组

    一.json写法以及获得其数据的方法 var jsons={ name:'wen', age:12, price:'qq' } console.log(typeof jsons);//object c ...

  10. Apple Watch PSD 源文件【免费素材下载】

    Apple Watch 是苹果公司于2014年9月发布的一款智能手表.分为运动款.普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择.这里分享的是 Apple Wat ...