首页 数据库 mysql教程 1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识

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

Jun 07, 2016 pm 03:00 PM
uml 学习 掌握 设计模式

要看懂 设计模式 ,你需要懂 类图 (Class Diagram ),也需要懂一点对象图(Object Diagram),下面介绍一些 UML 的必要知识,以便你学习设计模式。 属性、操作 下图简单介绍类的属性和操作。 类有属性(attributes)、操作(operations),属性和操作统称特

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


属性、操作

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

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



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

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


接口、枚举

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




抽象类

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


继承关系

类B继承类A,如下图:

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



抽象类被继承,如下图:

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




实现关系

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

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




依赖关系



先看图:

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

B依赖A,表示如果A的接口发生变化,B也需要相应地改变。
依赖的常见情况有:
1. B调用了A的方法。
2. B的方法中,使用了A为参数。
3. B的方法返回值类型为A。



引用关系



先看图:

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


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

你可能会问:某类保持另外一个类的引用,一般都会调用另外一个类的方法,那么它们的关系不应该是依赖关系吗?引用关系与依赖关系有什么区别?
这个问题很好!某些情况下,某类保持另外一个类的引用,但该类不调用另外一个类的方法,而是将另外一个类的引用暴露出来,供外部调用。
例如Class1有某一属性Class2,访问该属性可获得Class2的实例:
class1 = new Class1( );
class2 = class1.Class2;
Class1虽然有Class2的引用,但它自身不调用Class2的方法,而是让外部通过熟悉获得Class2的实例。

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



“包含”关系

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

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



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

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


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



对象图

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

对象图的例子:

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

 

 

 

 

 

 

请看下一文……

 

 

 

 

 

 

作者:张传波

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

软件研发管理资深顾问

CMMI首席专家

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

《硬啃设计模式》作者

www.umlonline.org创办人

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java框架中设计模式与架构模式的区别 Java框架中设计模式与架构模式的区别 Jun 02, 2024 pm 12:59 PM

在Java框架中,设计模式和架构模式的区别在于:设计模式定义了在软件设计中解决常见问题的抽象解决方案,关注类和对象之间的交互,如工厂模式。架构模式定义了系统结构和模块之间的关系,关注系统组件的组织和交互,如分层架构。

Java设计模式之装饰器模式剖析 Java设计模式之装饰器模式剖析 May 09, 2024 pm 03:12 PM

装饰器模式是一种结构型设计模式,允许动态添加对象功能,无需修改原始类。它通过抽象组件、具体组件、抽象装饰器和具体装饰器的协作实现,可以灵活扩展类功能,满足变化的需求。示例中,将牛奶和摩卡装饰器添加到Espresso,总价为2.29美元,展示了装饰器模式在动态修改对象行为方面的强大功能。

Java设计模式之适配器模式的妙用 Java设计模式之适配器模式的妙用 May 09, 2024 pm 12:54 PM

适配器模式是一种结构型设计模式,允许不兼容对象协同工作,它将一个接口转换为另一个,使对象能够顺利交互。对象适配器通过创建包含被适配对象的适配器对象,并实现目标接口,实现适配器模式。在一个实战案例中,通过适配器模式,客户端(如MediaPlayer)可以播放高级格式的媒体(如VLC),尽管其本身仅支持普通媒体格式(如MP3)。

PHP 设计模式实战案例解析 PHP 设计模式实战案例解析 May 08, 2024 am 08:09 AM

1.工厂模式:分离对象创建和业务逻辑,通过工厂类创建指定类型的对象。2.观察者模式:允许主题对象通知观察者对象其状态更改,实现松耦合和观察者模式。

PHP设计模式:测试驱动开发实践 PHP设计模式:测试驱动开发实践 Jun 03, 2024 pm 02:14 PM

TDD用于编写高质量PHP代码,步骤包括:编写测试用例,描述预期功能并使其失败。编写代码,仅使测试用例通过,无需过分优化或详细设计。测试用例通过后,优化和重构代码以提高可读性、可维护性和可扩展性。

设计模式如何应对代码维护难题 设计模式如何应对代码维护难题 May 09, 2024 pm 12:45 PM

设计模式通过提供可重用和可扩展的解决方案来解决代码维护难题:观察者模式:允许对象订阅事件,并在事件发生时收到通知。工厂模式:提供了一种创建对象的集中式方式,而无需依赖具体类。单例模式:确保一个类只有一个实例,用于创建全局可访问的对象。

java框架中使用设计模式的优缺点有哪些? java框架中使用设计模式的优缺点有哪些? Jun 01, 2024 pm 02:13 PM

Java框架中使用设计模式的优点包括:代码可读性、可维护性和可扩展性增强。缺点包括:过度使用导致复杂性、性能开销以及学习曲线陡峭。实战案例:代理模式用于延迟加载对象。明智地使用设计模式可充分利用其优势并最小化缺点。

Guice框架中设计模式的应用 Guice框架中设计模式的应用 Jun 02, 2024 pm 10:49 PM

Guice框架应用了多项设计模式,包括:单例模式:通过@Singleton注解确保类只有一个实例。工厂方法模式:通过@Provides注解创建工厂方法,在依赖注入时获取对象实例。策略模式:将算法封装成不同策略类,通过@Named注解指定具体策略。

See all articles