UML第二部分和创建型模式总结
UML:视图在最高层次可以划分为三个领域:结构性分类、动态行为和模型管理。结构性分类描述了系统中的事物和事物间的关系。分类包括类、用例、构件和结点。分类提供了动态行为构建的基础。
动态行为描述了系统时间上的行为,行为可以用静态视图中系统快照的一系列变更来描述。行为模型视图主要用来描述形成系统并发与同步机制的线程和进程,其关注的重点是系统的性能、易伸缩性和系统的吞吐量等非功能性需求。行为模型视图利用并发来描述资源的高效使用、并行执行和处理异步事件。除了讲系统划分为并发执行的控制线程之外,行为模型还必须处理通信和这些线程及进程之间的同步问题。行为模型视图主要供系统开发人员和系统集成人员使用,它由序列图、协作图、状态图和活动图组成。UML 还包括欲提供有限但实用扩展能力的若干结构。这些结构包括约束、版型和标签值。它们适用于所有视图的元素。
交互视图描述了实现系统行为角色之间的消息交换序列。分类角色是对交互中充当特殊角色的对象的描述,从而使该对象区别于相同类的对象。视图提供了系统中行为全局的描述--它显示了多个对象间的控制流程。交互视图用侧重点不同的两种图来显示:顺序图和协作图。
顺序图描述了对象之间传递消息的时间顺序,用来表示用例中行为顺序状态的视图。在顺序图中对象之间是通过消息进行通讯。消息由从一个对象的生命线指向另一个对象的生命线的直线箭头表示,箭头上标注要发送的消息名。
协作图着重于描述协作对象间的交互和连接。协作图用几何排列来表示交互作用中的各角色。附在类元角色上的箭头代表消息。消息的发生顺序用消息箭头处的编号来说明。
活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种变形。活动图描述了顺序和并发活动分组。活动视图表达为活动图。
活动图包括一些方便的速记符号,这些符号实际上可以用于任何状态图,活动状态显示为带有活动描述的圆侧边的方框(而一般的状态是带四个圆角的方框)。简单的结束迁移显示为箭头,分支显示为迁移上的迁移条件或者带有多个标签箭头的菱形。控制的分叉和连接与状态图中的表达方式一致,即进入和离开同步条的多个箭头。
状态机视图通过对每个类的对象的生命期进行建模,描述了对象时间上的动态行为。
状态机是由状态和迁移组成的图,通常状态机附属于类,描述了类实例对接收事件的响应。 状态机还可以附加于操作、用例、协作、以描述它们的执行。状态机显示为状态图。
创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。
创建型模式包括5个模式:单例模式,工厂方法模式,抽象工厂模式,原型模式,建造者模式
单例模式可以保证系统中,应用该模式的类一个类只有一个实例。
主要包括三部分:
私有的构造方法
指向自己实例的私有静态引用
以自己实例为返回值的静态的公有的方法
定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。
工厂方法模式具体包含:
抽象产品:一般是产品接口或者抽象产品类。主要目的是定义产品的规范,所有的产品实现都必须遵循产品接口定义的规范。产品接口是调用者最为关心的,产品接口定义的优劣直接决定了调用者代码的稳定性。
具体产品:实现产品接口的具体类,决定了产品在客户端中的具体行为。
抽象工厂:一般是工厂接口或者抽象工厂类。是工厂方法模式的核心,与调用者直接交互用来提供产品。
具体工厂:在编程中,工厂实现决定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。
抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象
抽象工厂模式也是包含抽象产品、具体产品、抽象工厂、具体工厂,但是抽象工厂中有产品等级结构和产品族的概念。
和工厂方法模式的区别:
工厂方法模式提供的是一个产品等级结构的实现,抽象工厂模式提供多个不同的产品等级结构的实现。
是用于创建重复的对象,同时又能保证性能。 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式包含四个要素:
产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来返回产品。
建造者:实现抽象类的所有未实现的方法,具体来说一般是两项任务:组建产品;返回组建好的产品。
导演类:负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。
原文:https://www.cnblogs.com/bxsr/p/14379505.html