设计模式补完计划

目录

1.uml类图
2.uml时序图
3.设计模式

uml类图

  1. 泛化关系(继承):指类继承自类,接口继承自接口的关系,用extend关键字


    1.泛化关系
    1.泛化关系
  2. 实现关系:指类继承自接口,用implement关键字


    2. 实现关系
    2. 实现关系
  3. 聚合关系,表示B由A组成,整体和部分不是强依赖关系,整体不存在,部分也存在。比如大雁和雁群


    3. 聚合关系
    3. 聚合关系
  4. 组合关系,表示B由A组成,整体不存在了,部分也不存在,用实心菱形表示。B类和A类的生命周期相同。比如大雁和翅膀。
  5. 关联关系:实线箭头。表示强关联关系,一般是B类中存在属性类A
  6. 依赖关系:虚线箭头,表示一个对象运行期间会用到另一个对象的关系。一般是B类中method的参数用到A类

uml时序图

动态图包括【交互图】【活动图】【状态图】
其中交互图又包括【时序图】【协作图】

时序图组成

对象Object

对象

矩形将对象包裹起来,名称下有下划线。
对象创建时机:

  • 处于顶端:说明交互时对象已经存在
  • 不在顶部:说明对象在交互过程中创建

生命线Lifeline

生命线

虚线,表示对象的存在,长度取决于交互时间。

激活Activation

激活

表示对象执行一项操作的时期,这个时候对象被占用以完成某项任务。

  • 去激活:表示对象处于【空闲状态】。对象的去激活是在激活条的底部,通常发生在一个消息离开对象生命线。
  • 激活:生命线变为矩形,这个矩形就是激活条。对象激活是在激活条的顶部。

消息

时序图和协作图中消息的区别:时序图强调消息的顺序,协作图强调交换消息的对象间的关系。
消息类型:


异步消息;发送者发送消息后,继续自己的活动,异步消息的发送者和接受者是并发工作的

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

过程调用中返回的消息;

绘制反身消息;又叫自关联消息,表示方法自身调用以及一个对象内的方法调用了另外一个方法

设计模式

设计模式一般分为三种: 创建型模式,结构型模式,行为型模式

创建型模式

包含模式

simple Factory Pattern 又叫静态工厂模式(static Factory Method)
缺点:
一旦添加新产品,就要修改工厂逻辑,可能造成工厂逻辑复杂,不利于系统的扩展和维护
优点:
传一个参数,就能获得需要的产品/对象,适用于工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,不关心如何创建

也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式
在这里,核心的共产类不再负责所欲产品的创建,而是将具体的工作交给子类去做,核心类仅仅负责定义具体工厂类必须实现的接口。使得工厂方法模式可在系统不修改工厂角色的情况下引进新产品。
可以理解为在简单工厂方法的基础上,对工厂也做了抽象,然后使用面向对象的多态性,动态生成工厂。

  • 抽象工厂模式(Abstract Factory)
    重要程度:5

与工厂方法模式最大的区别在于,我又被强化了。工厂方法针对的是一个产品登记结构,而抽象工厂模式则需要面对多个产品等级结构。
新增工厂和产片容易,但是新增产品等级结构麻烦。
如很多系统软件需要更改主题,界面的按钮。文本框。背景色等一起发生变化时,可以使用抽象工厂模式进行设计。

开闭原则:
要求系统对扩展开放,对修改封闭。
工厂模式的退化

  • 当抽象工厂模式中每一个具体工厂类只创建一个产品对象,也就是只存在一个产品等级结构时,抽象工厂模式退化成工厂方法模式;
  • 当工厂方法模式中抽象工厂与具体工厂合并,提供一个统一的工厂来创建产品对象,并将创建对象的工厂方法设计为静态方法时,工厂方法模式退化成简单工厂模式。
  • 建造者模式(Builder)
    重要程度:2

Android中经常使用的builder模式,解决了成员属性初始化的一系列问题,比如判断啦,赋值先后顺序啦,在创建者模式里完全内部实现,不用暴露给对象用户。用户无需关心属性的组装方式。

  • 原型模式(Prototype)
    重要程度:3

JavaScript使用的这种模式,来实现类的继承和扩展。
其特点在于:复制一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所叫的“原型”。
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。

优点:加速并简化对象的创建,比如在一个循环内创建对象,使用原型模式最好。
注意:
1.原型模式复制对象不会调用类的构造方法。它直接在内存中复制数据。
2.Object的clone是浅拷贝,只会拷贝对象中的基础数据类型,对于数组·容器对象 ·引用对象都不会拷贝。

  • 单例模式(Singleton)
    重要程度:4

结构型模式

包含模式

  • 适配器模式(Adapter)
    重要程度:4

Android界面开发大量使用的模式,适配器的实现是把客户类的请求转换为对适配者的相应接口的调用。
适配器模式:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。其别名为包装器(Wrapper)。适配器可以作为类结构模型,也可以作为对象结构模型。
适用环境:系统需要使用现有类,而现有类不符合系统的需要。

  • 桥接模式(Bridge)
    重要程度:3

  • 组合模式(Composite)
    重要程度:4

  • 装饰模式(Decorator)
    重要程度:3

将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator).装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。这就是装饰模式的模式动机。

  • 外观模式(Facade)
    重要程度:5

  • 享元模式(Flyweight)
    重要程度:1

  • 代理模式(Proxy)
    重要程度:4

通过引入代理对象来间接访问一 个对象,这就是代理模式的模式动机。给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式
几种常用的代理模式
图片代理;远程代理;虚拟代理

行为型模式

行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。
行为型模式不仅关注类和对象的结构,而且重点关注他们之间的相互作用
通过行为型模式,更清晰的划分类和对象的职责。

行为型分为: 类行为型模式 对象行为型模式

  • 类行为型模式: 使用继承关系在类之间分配行为,类行为型模式通过多态方式(polymorphism)分配父类与子类的职责

  • 对象行为型模式:使用对象的聚合关联关系来分配行为,通过对象关联等方式来分配两个或多个职责。系统中药尽量使用关联关系来取代继承关系

包含模式

  • 职责链模式(Chain of Responsibility)
    重要程度:3

  • 命令模式(Command)
    重要程度:4
    特点是请求调用者和接受者解耦;可在不通的时间制定请求,将请求排队和执行;支持命令的撤销和恢复,支持命令的组合

  • 解释器模式(Interpreter)
    重要程度:1

  • 迭代器模式(Iterator)
    重要程度:5

  • 中介者模式(Mediator)
    重要程度:2

  • 备忘录模式(Memento)
    重要程度:2

  • 观察者模式(Observer)
    重要程度:5
    对象与对象之间的依赖关系,一个对象发生改变时自动通知其他对象,其他对象做出相应的反应。发生改变的对象(观察目标),被通知的对象(观察者)。一个观察目标可对应多个观察者。观察者之间没有相互联系
    优点:
    可实现表示层逻辑层的分离,并定义稳定的消息更新机制,抽象了更新接口。
    在观察者和观察目标之间建立一个抽象的耦合
    支持广播通信。
    凡是涉及一对一或者一对多的对象交互场景都可以使用观察者模式。

  • 状态模式(State)
    重要程度:3
    也可以理解为我们在游戏开发中经常使用的状态机

  • 策略模式(Strategy)
    重要程度:4
    可以理解为解决一个问题有很多算法,每种算法都是一种策略。
    我们可以定义一些独立的类来封装算法,每一个算法就是一个策略类。为了保证策略一致性,我们做一个抽象类做算法的定义。
    这样策略模式让算法独立于它的客户变化而变化,也称作政策模式(Policy)

  • 模板方法模式(Template Method)
    重要程度:3

  • 访问者模式(Visitor)
    重要程度:1

参考文档

创建型模式
【UML 建模】UML入门 之 交互图 -- 时序图 协作图详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,375评论 1 15
  • 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者...
    RamboLI阅读 4,097评论 0 1
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,332评论 3 14
  • 一个UML类图 类之间的关系 类的继承结构表现在UML中为:泛化(generalize)与实现(realize) ...
    僚机KK阅读 3,865评论 0 0