[待完善]通俗易懂理解设计模式

//TODO:将设计模式用小明回家过年的场景串起来

创建型

  1. 简单工厂

业务逻辑写在一起,通过配置文件来解决调用哪个工厂 ,调用时不需要知道要调用哪个工厂

  1. 工厂方法

实例化每个工厂,调用时需要具体知道调用哪个工厂

  1. 抽象工厂

一个工厂可以生产两个不同的产品 :创建c产品需要建造一个工厂,此时可以不用建工厂 在A工厂生产这个产品就好了

  1. 建造者模式

Director 用来规范流程

Builder 用来规范有哪些功能

ConcreteBuilder 功能的多态实现

不同的建造者建造出不同的东西

疑惑:流程控制在这里有多大的作用,流程控制是否可以 不同

  1. 单例模式
    创建一个对象,不需要每次都创建新对象
    Double Check Locking 解决多线程

  2. 原型模式 (需要大量对象时,快速创建多个对象 比如说邮件发送 )

就是克隆模式

1)浅克隆 只克隆对象

2)深克隆 克隆对象同时克隆属性

结构型

  1. 享元模式
    单例工场模式的一个细力度 类内部共享多个对象 而不用每次实例化这些类 比如说文件字母 + 外观属性

  2. 适配器模式

  3. 对象适配器

继承原有对象,在类内进行转换

  1. 类适配器

继承接口,对原有的类进行转换

3.接口适配器

用一个抽象类实现 接口的所有方法 但都是空方法 ,具体使用时可再覆盖相应方法
例子1:mac 港行 插座适配

例子2:usb转接头

  1. 门面模式
    封装统一接口 修改内部实现而不影响外观
    经纪人模式,有经纪人来负责对接
    土豪回家
    客户端与子系统之间加入集成器
    缺点:违反开闭原则
    适配器是一个中转,门面是一个集成

  2. 桥接模式
    例子:汽车公路

组合优于继承
A功能拥有B功能,以前的方式是 A继承BA拥有了B功能

而现在是A依赖于桥 B实现桥的的功能 那么A就可以直接调用B的功能了

  1. 装饰器模式
    组合后仍然是原对象 仍然可以进行再次组合
    组合后的接口仍和原接口一致
    装饰者和被装饰者都有共同的父类 无需通过继承 就可为其增加功能

  2. 代理模式
    功能一对一的代理 外界感知一样(门面:功能的集成)
    继承原有类的功能

  3. 组合模式 将树形结构的的各个点 抽象为一个点 方便 每个点的添加和删除
    新增1. 依赖注入
    类的依赖对象不再类内定义,通过构造函数传参或其他方式注入
    依赖弱点:创建对象时需要先知道所有依赖

新增2. 容器

将对象的创建等其他东西,通过容器来自动处理,不需要使用者手动创建相应的类对象

Dependency Injection Container 是一个“知道如何实例化和配置对象”的对象(工厂模式的升华)。为了做到这点,它需要知道构造函数的参数、以及对象之间的关系。

行为型

  1. 观察者模式
    发布订阅模式 一个对象产生某个行为后 通知关注他的对象

  2. 模板方法模式
    订一个模板,具体实现到子类
    一个楼的户型 都是三居室 每个房子的布局不一样

  3. 迭代器模式
    foreach 一般都是实现系统内的迭代器

  4. 职责链
    每个人各司其职 设置下一个对象可以继续调用
    请假的流程

  5. 命令模式
    所有操作都继承命令 封装到一起利于统一操作

  6. 解释器模式(暂时为看)
    某个行为对应着一系列操作的封装

  7. 中介者模式
    分布式时 中介 负责任务的调度和分配 进行关系的解耦

  8. 备忘录模式
    发起人有一个 可以记录备忘 备忘录管理者来管理这些备忘录

  9. 状态模式
    每个动作的执行依赖于当前的状态,不是随时都可以执行的
    电梯 的状态
    注册引导页面

  10. 策略模式
    用来集中管理不同的算法

  11. 访问者模式
    结构稳定 行为 经常变换 每次都访问结构的所有数据 然后 不同对象输出不同的内容
    列子 账本 收入,支出两个结构很稳定 老板看账 财务部门查账

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值