关于UML第二部分和创建型模式的总结

视图分为三个视图域:结构分类、动态行为和模型管理。

<1>动态行为是指描述了系统随时间变化的行为。动态行为视图包括状态机视图。活动视图和交互视图。

<2>交互试图交互视图描述了实现系统行为角色之间的消息交换序列。分类角色是对交互中充当特殊角色的对象的描述。从而使该对象区别于相同类的对象,视图提供了系统中行为全局的描述。它显示了多个对象间的控制流程 交互视图用侧重点不同的两种图来显示 顺序图和协作图 。
1. 顺序图 顺序图描述的是一个事务的流程,这个流程和面向过程编程中的顺序结构是一样的,从上到下。

 

 

 

2. 协作图  协作图是对在一次交互中有意义的对象和对象间的链建模,对象和关系只有在交互的语境中才有意义。协作图用几何排列来表示交互作用中的各角色。附在类元角色上的箭头表示消息,消息的发生顺序用编号数字表示。

 

 

 


3.活动试图:活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种变形。活动状态表现了一项活动:工作流的步骤或操作的执行。活动图描述了顺序和并发活动分组。活动视图表达为活动图。

 

 

 


4.状态机视图 状态机视图是一个类对象可能经历的的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命周期中满足某种条件的一段时间段建模。当一个事件发生时触发状态的转换,从一个状态转化为另一个状态。

 

 

 


 单例模式(Singleton单体)

确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。
(1)提供唯一的私有构造器,避免多个单体(Singleton)对象被创建。
(2)使用静态域(static field)来维护实例。
(3)使用静态方法(Static Method)来监视实例的创建。 (a,加载时实例化     b,使用时实例化(惰性初始化):这样做可以在运行时收集需要的信息来实例化单体对象,确保实例只有在需要时才被建立出来.)
(4)单体对象的成员变量(属性):即单体对象的状态   通过单例对象的初始化来实现成员变量的初始化。   通过方法对单体对象的成员变量进行更新操作。

优点:
1、提供了对唯一实例的受控访问。
2、可以节约系统资源,提高系统的性能。
缺点:
1、缺少抽象层,扩展困难。
2、例类的职责过重。
3、由于自动垃圾回收机制,可能会导致共享的单例对象的状态丢失。

 

 

 抽象工厂模式(Abstract Factory)

主要解决接口选择的问题。提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
要点如果没有应对“多系列对象构建”的需求变化,则没必要用抽象工厂模式

  1. 如果没有应对“多系列对象构建”的需求变化,则没必要用抽象工厂模式

  2.  系列对象指的是这些对象之间有相互依赖,或作用的关系。
  3. 抽象工厂模式主要在于应对“新系列”的需求变动,其缺点在于难于应对“新对象”的需求变动。
  4. 抽象工厂模式经常和工厂方法模式共同组合来应对“对象创建”的需求变化。
    优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
    缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。
     
    生成器模式(建造者模式)
    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    在以下情况使用Builder模式:
    • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
    • 当构造过程必须允许被构造的对象有不同的表示时。
    优点
    1. 建造者独立,易扩展。
    2. 便于控制细节风险。
    缺点
    1. 产品必须有共同点,范围有限制。
    2. 如内部变化复杂,会有很多的建造类。
     
    Builder模式与Abstract Factory或Factory模式相似,都可以创建复杂对象,但是不同之处在于Builder模式着重于一步步构造一个复杂对象,在最后一步返回产品,强调构造细节,而后两者着重于多个系列的产品一次生成,通常产品是立即返回的。

 

 

 


工厂方法模式(Factory Method )

定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。
优点:
1、工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节。能够让工厂自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部。
2、在系统中加入新产品时,完全符合开闭原则。
缺点:
系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,会给系统带来一些额外的开销。增加了系统的抽象性和理解难度。

 

 

 


原型模式(Prototype)

使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。
优点:
1、简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率。
2、扩展性较好。
3、提供了简化的创建结构,无须专门的工厂类来创建产品。
4、可以使用深克隆的方式保存对象的状态,需要的时候可辅助实现撤销操作。
缺点:
1、需要为每一个类配备一个克隆方法,而且该克隆方法位于一个类的内部,当对已有的类进行改造时,需要修改源代码,违背了开闭原则。
2、在实现深克隆时需要编写较为复杂的代码。

 

 

posted @ 2021-02-04 20:42  雾岛风起时  阅读(116)  评论(0)    收藏  举报