UML学习笔记——细化阶段迭代二三
Elaboration细化迭代二
chapter26 GoF设计模式
1、适配器(GoF)
2、Factory工厂模式
问题: 有特殊考虑(例如存在复杂创建逻辑、为了改良内聚而 分 离创建职责等)时,应该由谁来负责创建对象?
创建称为工厂的纯虚构对象来处理这些创建职责
通常用单实例类来访问工厂模式
3、Singleton单实例类
问题: 对象需要全局可见性和单点访问(访问的都是同一个对象)
对类定义静态方法以返回单实例
例如工厂类中定义一个静态方法,返回自己的唯一实例,那么其他类可以方便地通过调用这个方法获得工厂对象的引用
一般使用缓式初始化即调用获取某个对象的方法时才创建这个对象,而预初始化是在调用前就已经创建了这个对象(静态成员),预先创建可能会占用资源,并且有的对象的创建逻辑复杂
4、Strategy策略
问题: 何设计变化但相关的算法或政策?如何设计才能使这些算法或政策具有可变更的能力?
在单独的类中分别定义每种算法/策略,并使其拥有共同的接口
策略是基于多态的,对变化的算法/政策提供了防止变异,通常由工厂创建
5、Composite组合
问题: 何能够像处理非组合(原子)对象一样,处理一组对象 或 具有组合结构的对象呢?
定义组合和原子对象的类,使他们实现共同的接口
基于多态提供防止变异
6、Facade外观
问题: 对一组完全不同的实现或接口,需要公共、统一的接口。可能会与子系统内部的大量事物产生耦合,或者子系统的实现可能会改变。
对于子系统定义的唯一接触点——使用外观对象封装子系统。该外观对象提供唯一和统一的接口,并负责与子系统构件进行协助。
外观是“前端”对象,是子系统服务的唯一入口;子系统的实现和其他构件是私有的,并不对外部构件可见。外观对子系统实现的变化提供防止变异。
书上讲的不清不楚的,但我感觉这个其实像api
7、Observer观察者
问题: 同类型的订阅者对象关注于发布者对象的状态变化或事件,并且想要在发布者产生事件时以自己独特的方式作出反应。此外,发布者想要保持与订阅者的低耦合。如何对此进行设计呢?
定义“订阅者”或“监听器”接口,订阅者实现此接口。发布者可以动态注册关注某事件的订阅者,并在事件发生时通知他们。
View对象和Model对象都有可能变化,但它们不直接耦合,只要接口不变彼此的改变就不容易影响到对方;其实像MVVM的思想,视图UI与业务逻辑分开,只有数据绑定在一起,极大降低了耦合性
Elaboration细化迭代三
chapter28 活动图
chapter29状态机图
上面都看书,很简单
chapter30 用例关联
1、include包含关系
当两个或多个独立用例中存在重复,想避免冗余时,可以将重复的部分分解出去为一个子功能用例(或者不想原用例过于复杂分解一部分出去),使用包含关系包含重复的部分
2、extend拓展关系
拓展部分过于复杂或者原始用例的拓展部分不便于添加,可以将要拓展的内容作为子功能级别的拓展用例
chapter31 领域模型的精化
1、Generalization泛化关系
概念子类集合的所有成员都是其超类集合的成员,子类 is-a 超类 ( 注意不是类,是领域模型里面的概念类 )
子类的属性和关联必须100%与超类一致
2、abstract conceptual class 抽象概念类
如果类C的每个成员也必须是子类的成员,则C被称为抽象概念类(有点像抽象类的实例只能是其非抽象的子类一样,也就是说这个类不能实例化)
3、association class 关联类
4、关联受限
5、reflexive association 自反关联
后面的章节都是一些拓展和实战,不太算重点我也没什么笔记就不放了
参考文献
(美)Carig Larman著. UML模式和应用(原书第三版)[M]. 李洋等译. 机械工业出版社, 2006-05
单纯是个人的学习/复习笔记,对课本知识点的总结归纳,自己也是用markdown做的笔记就顺手发上来