图说设计模式(一)

        软件模式的的概念一般用于软件开发领域,即软件开发的总体指导思路或者参照样板,软件模式并不仅限于设计模式,还包括架构模式、分析模式、过程模式等。实际上软件生存周期每一个阶段都存在一些被认同的模式。

        (说人话就是说,软件模式概念比较杂,有设计模式,架构模式、过程模式等包含在内)

总之,设计模式学好的层次有三个:

1.第一个就是白纸上你可以画出所有模式结构和时序图;(意思就是心中要明了各种模式概念意思,图解)

2.能用代码实现;既要看的懂也用用得了;

3.灵活运动到项目中;

第一步:看懂UML类图和时序图

首先举一个例子,例子中有一些类成员:车、小汽车、自行车、轮胎、发动机、SUV、身份证、学生、班级

如图所示:

这个图展示了类成员相互之间的关系;

车的类图是<abstract>,表示车是一个抽象类;

它有两个继承类:小汽车和自行车,他们之间的关系是实现关系,使用空心箭头和虚线表示;

小汽车和SUV之间也是继承关系,他们之间为泛化关系,使用带空心箭头的实线表示;

小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;

学生与身份证之间有一一关联的关系,使用一根实线表示;

学生上学要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

这六种关系为:泛化关系、实现关系、聚合关系、组合关系、关联关系、依赖关系、

        首先说明泛化与实现关系:(generalization 和 realize)

             我们在说明类的继承时候也是分情况的,如果是继承抽象类,那么这就叫做实现,毕竟抽象类都是虚函数,继承的类要把成员实现,那么除此之外的继承,即从非抽象类中继承,叫做泛化。

              图形表示:空心箭头加虚线表示实现,空心箭头加实现表示泛化。

         然后说明聚合关系(aggregation):采用空心菱形箭头的实线表示。

          如果说A聚合到B上,则说B由A组成,聚合用于表示实体对象之间的关系,比如部门由多个员工组成,但是这种关系不是强依赖关系,部门不在了,员工可以存在。

          组合关系(composition):采用实心菱形箭头的实线表示。

          A组成B,则B由A组成,是一种强依赖关系的特殊聚合关系。

         关联关系(association):一条直线表示

          这是一种静态关系,与运行状态无关,单纯的直线不强调方向,表示对象相互知道,如果A指向B,表示A知道B。

在程序中,关联对象通常是以成员变量的形式实现的。

          依赖关系(dependency):带箭头的虚线表示

          A指向B,表示A依赖于B,描述运行期间的依赖关系,是一种临时性的依赖,依赖也有方向,双向依赖非常糟糕,应该保持单向依赖,拒绝双向。

在代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还使用了对方的方法和属性。

时序图

显示对象之间的交互的图,对象按照时间排序,即显示参与交互的对象及其对象之间的消息交互的顺序;

时序图建模要素主要有:角色(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等

详细概念介绍:

这里角色(Actor):可以是人、系统、子系统等,指代宽泛。

对象(Object):三种命名方式:1、对象名和类名;2、只显示类名(匿名对象);3、只显示对象名;

生命线(Lifeline):在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

控制焦点(Focos of control):表示时间段的符号,在这里,对象将执行相应的操作。用小矩形表示。

消息(Message):分为同步消息(Synchronous Message)、异步消息(Asynchronous Message)和返回消息(return MEssage)

         :同步消息=调用消息,消息发送者发送后停止活动,等待消息接受者放弃或者返回控制,用来同步

          :异步消息:发送者发送消息后继续自己活动,不等待消息接受者反馈,两者并发

          :返回消息,表示从过程调用返回

     自关联消息(self-message)表示方法的自身调用以及一个对象内的一个方法调用另一个方法。

猜你喜欢

转载自blog.csdn.net/CWY_007/article/details/81536741