UML学习

作者: 一毛钱 | 来源:发表于2019-02-13 07:45 被阅读0次

OOA(object-Oriente Analysis): 分析提出解决方案。
OOD(object-Oriente Design):对OOA 进行进一步实现。

一般连起来使用,说OOAD。

主要学习三个步骤:
1、用例。
2、设计模型,类与类之间的关系描述,类图(静态模型)

3、建立动态模型,做时序图。 IMG_2361.PNG IMG_2359.PNG IMG_2360.PNG

外观模式

封装,隐藏实现细节,简化操作流程,解耦。
应用场景:复杂子系统,改进使用操作类来操作子系统,通过使用操作类来使用子系统。 不关心子系统内部的逻辑,只需要操作后的记过就行。 (通过manager管理所有的操作,外面直接调用manager的方法)

demo连接

责任链模式

本质:
1、 让请求者不关心具体接收者是谁,只需要得到自己的具体结果。
2、在一个请求对应多个接收者情况下,接收者之间可以自由组合,灵活性很高。
3、新增接收者处理,也只需要增加链中的一个节点,不需要改动太多。
例子: 找人,一个个往下寻找,直到所有人都问了一遍,最终返回找到或者没找到的情况。

demo连接

命令模式

角色分析:
角色一:接收者-->receiver(具体实现)MacComputer
角色二: 命令接口--> CommandProtocol (协议)
角色三: 具体命令角色 --> ConcrateCommand (实现类),每一个实现类都需要遵守接口或者说协议。
MacStartupCommand MacShutdownCommand
特点: 持有接收者的引用
角色四: 请求者 --> Invoker MacInvoker

demo连接

泛型适配

泛型设计的代码 加命令模式

适配器模式

角色分析:
角色一:目标接口,通过该接口获取到目标需要的数据,protocol
角色二:被适配者adaptee
角色二: 适配器 adaptor 用,核心部分,该部分用来处理需要的具体操作。分为两类: 类适配器,adaptor 继承自adaptee,对象适配器,adaptor 持有adaptee。
适配器模式相关的代码

工厂模式

1、定义一个用于创建对象的统一接口,然后由子类实现。
2、角色划分
角色一:抽象产品
角色二:具体产品
角色三: 抽象工厂
角色四:具体工厂

demo连接

简单工厂:

角色划分
角色一: 具体产品
角色二:具体工厂

demo连接

抽象工厂

至少有2条流水线
抽象工厂角色划分 :
角色一:抽象产品A -> MapViewProtocol
角色二:抽象产品B -> MapLocationProtocol

角色三:具体产品A1 -> BaiduMapView
角色四:具体产品A2 -> GaodeMapView

角色五:具体产品B1 -> BaiduMapLocation
角色六:具体产品B2 -> GaodeMapLocation

角色七:抽象工厂->MapFactoryProtocol
角色八:具体工厂A ->BaiduMapFactory
角色九:具体工厂B ->GaodeMapFactory

demo连接

策略模式

特点:1、定义了一系列的算法
2、每一个算法单独封装
3、每一个算法都可以相互替换
4、客户端可以独立变换算法(客户端就是调用者)
应用场景:
第一点:针对同一类型的问题多种处理方式,仅仅只是具体的行为有差别。
第二点:需要安全的封装统一类型的操作
第三点:出现同一个抽象类有多个子类,而又需要使用if-else或者switch-case 来选择具体的子类
开发场景案例: 加密算法
角色划分:
角色一:策略接口
角色二:具体策略
角色三:策略上下文(管理器)一般忽略,->而是用工厂

demo连接

构建者模式 (建造者模式、builder模式)

角色一:抽象产品-> productProtocol (可有可无)
角色二: 具体产品-> concreteProduct (核心)
角色三:抽象构建者(可有可无)
角色四: 具体构建者 (核心)
角色五: 统一组装(可有可无)

demo连接

模板方法模式

角色划分:
角色一: 抽象类 ->定义算法的框架结构,将一些特定的步骤延时到子类实现
角色二: 具体模板实现类,不改变算法结构,选择性去实现某些特定的步骤

demo连接

观察者模式

角色划分:
角色一: 被观察者(目标对象)
角色二: 具体被观察者
角色三: 观察者(抽象)
角色四:具体观察者

相关文章

网友评论

      本文标题:UML学习

      本文链接:https://www.haomeiwen.com/subject/sbfreqtx.html