UML学习笔记——细化阶段迭代二三

Elaboration细化迭代二

chapter26 GoF设计模式

一、适配器(GoF)

二、Factory工厂模式

问题: 有特殊考虑(例如存在复杂建立逻辑、为了改良内聚而 分 离建立职责等)时,应该由谁来负责建立对象?前端

建立称为工厂的纯虚构对象来处理这些建立职责算法

一般用单实例类来访问工厂模式设计模式

三、Singleton单实例类

问题: 对象须要全局可见性和单点访问(访问的都是同一个对象)api

对类定义静态方法以返回单实例markdown

例如工厂类中定义一个静态方法,返回本身的惟一实例,那么其余类能够方便地经过调用这个方法得到工厂对象的引用学习

通常使用缓式初始化即调用获取某个对象的方法时才建立这个对象,而预初始化是在调用前就已经建立了这个对象(静态成员),预先建立可能会占用资源,而且有的对象的建立逻辑复杂flex

四、Strategy策略

问题: 何设计变化但相关的算法或政策?如何设计才能使这些算法或政策具备可变动的能力?设计

在单独的类中分别定义每种算法/策略,并使其拥有共同的接口3d

策略是基于多态的,对变化的算法/政策提供了防止变异,一般由工厂建立server

五、Composite组合

问题: 何可以像处理非组合(原子)对象同样,处理一组对象 或 具备组合结构的对象呢?

定义组合和原子对象的类,使他们实现共同的接口

基于多态提供防止变异

六、Facade外观

问题: 对一组彻底不一样的实现或接口,须要公共、统一的接口。可能会与子系统内部的大量事物产生耦合,或者子系统的实现可能会改变。

对于子系统定义的惟一接触点——使用外观对象封装子系统。该外观对象提供惟一和统一的接口,并负责与子系统构件进行协助。

外观是“前端”对象,是子系统服务的惟一入口;子系统的实现和其余构件是私有的,并不对外部构件可见。外观对子系统实现的变化提供防止变异。

书上讲的不清不楚的,但我感受这个其实像api

七、Observer观察者

问题: 同类型的订阅者对象关注于发布者对象的状态变化或事件,而且想要在发布者产生事件时以本身独特的方式做出反应。此外,发布者想要保持与订阅者的低耦合。如何对此进行设计呢?

定义“订阅者”或“监听器”接口,订阅者实现此接口。发布者能够动态注册关注某事件的订阅者,并在事件发生时通知他们。

View对象和Model对象都有可能变化,但它们不直接耦合,只要接口不变彼此的改变就不容易影响到对方;其实像MVVM的思想,视图UI与业务逻辑分开,只有数据绑定在一块儿,极大下降了耦合性


Elaboration细化迭代三

chapter28 活动图

chapter29状态机图

上面都看书,很简单


chapter30 用例关联

一、include包含关系

当两个或多个独立用例中存在重复,想避免冗余时,能够将重复的部分分解出去为一个子功能用例(或者不想原用例过于复杂分解一部分出去),使用包含关系包含重复的部分

二、extend拓展关系

拓展部分过于复杂或者原始用例的拓展部分不便于添加,能够将要拓展的内容做为子功能级别的拓展用例


chapter31 领域模型的精化

一、Generalization泛化关系

概念子类集合的全部成员都是其超类集合的成员,子类 is-a 超类注意不是类,是领域模型里面的概念类

子类的属性和关联必须100%与超类一致

二、abstract conceptual class 抽象概念类

若是类C的每一个成员也必须是子类的成员,则C被称为抽象概念类(有点像抽象类的实例只能是其非抽象的子类同样,也就是说这个类不能实例化)

三、association class 关联类

四、关联受限

五、reflexive association 自反关联

后面的章节都是一些拓展和实战,不太算重点我也没什么笔记就不放了

参考文献 (美)Carig Larman著. UML模式和应用(原书第三版)[M]. 李洋等译. 机械工业出版社, 2006-05 单纯是我的的学习/复习笔记,对课本知识点的总结概括,本身也是用markdown作的笔记就顺手发上来

相关文章
相关标签/搜索