zoukankan      html  css  js  c++  java
  • UML第二部分和创建型模式

    一、UML第二部分

    1. 状态机视图

    状态机视图通过对每个类的对象的生命期进行建模,描述了对象时间上的动态行为。

    状态指就某个特定类而言,对于发生的事件具有相同性质响应的一系列对象值。

    状态机不但可以描述类的行为,而且可以描述用例,协作和方法的动态行为。

    状态机是由状态和迁移组成的图。

    状态机对理解控制机制较实用,如用户界面和设备控制器。

    1. 活动视图

    活动视图是状态机的一种对计算和工作流建模的特殊形式,活动图的状态代表了运算执行的状态,而非一般对象的状态。

    活动图包含活动状态。

    活动图可能包含动作状态,动作状态与活动状态很相似,但动作状态是原子的且当它活动时不允许迁移。

    活动图可能包含分支,以及并发线索中控制的分叉

    活动图是活动视图的标记形式

    1. 交互视图

    交互视图提供了描述一系列对象行为更全局的视图。该视图用协作来建模。

    协作是对上下文中交互实现某种行为对象群体的描述。协作包括了由对象和连接多填充的空槽。

    交互是在协作中由分类角色通过关联角色进行交换的一系列消息。

    协作图是包含分类角色和关联角色 而非仅包含分类和关联的类图

    二、创建型模式

    1. Singleton 单件(创建型模式)

    单线程Singleton模式的几个要点

    • Singleton模式中的实例构造器可以设置为protected以允 许子类派生。

    • Singleton模式一般不要支持ICloneable接口,因为这可能 会导致多个对象实例,与Singleton模式的初衷违背。

    • Singleton模式一般不要支持序列化,因为这也有可能导致 多个对象实例,同样与Singleton模式的初衷违背。

    • Singletom模式只考虑到了对象创建的管理,没有考虑对 象销毁的管理。就支持垃圾回收的平台和对象的开销来

    讲,我们一般没有必要对其销毁进行特殊的管理。

    • 不能应对多线程环境:在多线程环境下,使用Singleton模 式仍然有可能得到Singleton类的多个实例对象。

    1. Abstract Factory 抽象工厂模式(创建型模式)

    Abstract Factory模式的几个要点

    • 如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的静态工厂 完全可以。

    • “系列对象”指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”与“房屋”的依赖,“道路” “地道”的依赖。

    • Abstract Factory模式主要在于应对“新系列”的需求变动。 其缺点在于难以应对“新对象”的需求变动。

    • Abstract Factory模式经常和Factory Method模式共同组合 来应对“对象创建”的需求变化。

    1. Builder 生成器模式(创建型模式)

    Builder 模式的几个要点

    • Builder 模式主要用于“分步骤构建一个复杂的对”。在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。

    • 变化点在哪里,封装哪里—— Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动。

    • Abstract Factory模式解决“系列对象”的需求变 化,Builder模式解决“对象部分”的需求变化。Builder模式通常和Composite模式组合使用。

    1. Factory Method 工厂方法模式(创建型模式)

    Factory Method模式的几个要点

    • Factory Method模式主要用于隔离类对象的使用 者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。

    • Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。 • Factory Method模式解决“单个对象”的需求变化,Abstract Factory 模式解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化。

    1. Prototype 原型模式(创建型模式)

    Prototype模式的几个要点

    • Prototype模式同样用于隔离类对象的使用者和具 体类型(易变类)之间的耦合关系,它同样要求 这些“易变类”拥有“稳定的接口”。

    • Prototype模式对于“如何创建易变类的实体对象” 采用“原型克隆”的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象——所需工作仅仅是注册一个新类的对象(即原型),然后在任何需要的地方不断地Clone。

    • Prototype模式中的Clone方法可以利用.NET中的Object类的MemberwiseClone()方法或者序列化 来实现深拷贝。

  • 相关阅读:
    google-glog 开源库分析(一):glog介绍
    homebrew用法
    macos新手入门
    markdown语法_文本效果[转载]
    markdown语法[转载]
    从Search Sort到Join
    实际例子描述和分析“猎豹抢票跨站推荐功能有票刷不到”的疑似bug
    最简单例子图解JVM内存分配和回收
    B树在数据库索引中的应用剖析
    从Count看Oracle执行计划的选择
  • 原文地址:https://www.cnblogs.com/7930li/p/14377028.html
Copyright © 2011-2022 走看看