设计模式简单理解

  1. 设计模式

    • 说明

      • 读书笔记

      • 从数据结构角度分析.

      • 1:1,1:n,m:n的角度分析.

    • 主要内容

      • 设计模式和对比

      • 分类解析.

  2. 创建类型

    • 简介

      • 顾名思义,就是用来创建对象的.

      • 有的对象创建需要很复杂的一些操作,封装起来,只需要几个核心参数即可.

      • 针对的是 多肽类.

    • 工厂模式

      • 根据key创建对应对象.

      • 负责if else.

    • 抽象工厂

      • if else太多了,就需要拆分成多个工厂.

      • 拆分按照特性拆分,比如地区,特征之类的拆分即可.想怎么拆都可以.只要你的逻辑能说服别人.

    • 单例模式

      • 创建一个对象.只能创建一个.

      • 涉及到静态创建和动态创建,动态创建就需要考虑多线程安全和效率.

    • 创建者模式

      • 即给定一堆零件,用给的零件组装成为一个成品.

      • 即组装厂,零件通过容器保存在成品对象中,即容器可以用链表,数组,数图等保存.

      • 保存的方式符合逻辑,高效且节约内存即可.

      • 也可以想怎么存就怎么存.

    • 原型模式

      • 深浅拷贝而已.

    • 数据结构分析

      • 工厂则是map,通过key获取value.

      • 单例则是set,一个key就是一个类,一个类只有一个对象.

      • 创建者模式是二维数组.

    • a:b

      • 工厂是1:n.

      • 单例是1:1.

      • 创建者是m:n.

  3. 结构性

    • 简介

      • A,B两个类之间如何组合.

    • 适配器模式

      • A->B,转换为目标.

      • 既是A类型,也是B类型,即多个父类.

    • 代理模式

      • A->A,同一个类型,加了点操作.

      • 都是一个类型,但是代理的没有任何其他操作,只是做个检查什么的,然后将数据转发到另一个.

      • 即给原来的类加了点额外的检查或者是预处理.

    • 桥接模式

      • A*B组合,各自变化.

      • 其中一个是另一个的成员变量.成员变量可以采用抽象工厂创建.

    • 过滤器模式

      • 多态类,主要的任务就是负责过滤.

      • 即条件筛选,返回符合条件的.

    • 组合模式

      • 2-3-4树模型.

      • 一般用于处理层次结构,只是实现略微差异.

      • 叶子结点和根节点的差异就是,叶子结点没有子节点.

    • 装饰器模式

      • 链表,只是链表多了函数而已.

      • 每个多一个处理操作.

      • 侧重点是添加功能.

    • 外观模式

      • 简化对外的操作接口.

      • 函数就是外观.因为函数为使用者做了很多的事情.

      • 侧重点是简化,方便其他人使用.

    • 享元模式

      • 智能指针中的共享指针.

      • 共享,或者说缓存.

      • 引用计数,注意多线程安全和效率.

    • 总览

      • 适配器是个多面人.

      • 代理模式是个干脏活累活的,即校准和善后之类.

      • 桥接是各自变化的组合多面人.

      • 装饰器是链表.

      • 外观模式则是个老好人,简化后对外.

      • 享元模式,对象拷贝.

      • 组合模式适合于分阶层模型管理.

    • A:B

      • 适配器,1:m

      • 代理,1:1

      • 组合模式,l:m:n

      • 装饰器,n.

      • 外观模式,1.

      • 享元模式,1.

  4. 数据交互型

    • 责任链

      • 链表. 只是多了函数而已.

      • 这里采用的是递归向下,可以提前终止.

      • 装饰器模式需要都执行.

      • 可中断式装饰器.

    • 命令模式

      • 执行者可以执行多少种命令,就应该有多少种命令对象.

      • 命令则是执行者可以执行命令的任意组合的中间类.

      • 命令可以有多个执行者,需要执行这个命令.

    • 解释器模式

      • 语法二叉树.

    • 迭代器

      • 某个类,里面有数据,需要支持迭代.

      • 这个类的内部类或友元类实现了标准迭代接口,并支持返回.

    • 中介者模式

      • 有若干个对象,需要一个系统来对这些对象进行调度处理。

      • 公共交互平台就是一个中介者. 负责将消息收集并分发给目标. 避免直接对话. 中介可能修改数据.

    • 备忘录

      • 某个对象的n种状态.

      • git可以保存文件的n种状态,并存放在数据库.随时可以恢复历史版本.

      • 快照,容器,支持恢复.

    • 观察者

      • 注册,通知,被通知对象收到通知可以选择是否进行查询数据.

      • 通知一般不包含数据,而是通知某类数据准备就绪.

    • 状态模式

      • do,undo.

      • 只支持记录一条历史记录的备忘录模式,即仅一个ctrl-z.

    • 策略模式

      • get,set.

      • get,set的对象是一个多肽类.

    • 模板模式

      • 执行流程固定,但是部分细节没有确认,可以灵活处理.

      • 常见安卓的activity处理.

    • 访问者模式

      • 数据和操作分离,数据之间不存在关联.

      • 操作只读,毕竟visitor.

      • 多态类和重载. 多态类存在集合,遍历集合,根据重载再进行调用对应的visit函数.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值