设计模式汇总

  • 创建型模式:
    • Abstract Factory 抽象工厂 创建一系列对象 屏蔽对象创建过程 
    • Bulider 生成器 创建复杂对象,将对象的生成和行为分离,同样的创建过程可以根据配置生成不同的该对象
    • Factory Method 工厂方法 将对象的创建延迟到子类中去
    • prototype 原型 js的大家都懂得 定义一个原型 然后可以添加属性 操作等
    • singleton 单例 不解释
  • 结构型模式:
    • adapter  适配器 新老接口 过度
    • bridge 桥接
    • composite 组合 spring IOC 白盒测试等 主张 程序中的每个组建都必须是能够单独 拔插的
    • decorator 修饰 可以随意增加对象行为 修饰主要用于 最底层类,这些类在不影响其他类的情况下自由增加可删除的辅助功能(与抽象类 相反)
    • facade 降低系统对外界提供接口的复杂性,比如对应一个支付接口,只提供支付接口(支付接口里面的子接口不提供)
    • flyweight 组装思想 定义基本操作时适度,然后将适度粒度的对象或者能力组合成各种对象
    • proxy 代理 不解释
  • 行为模式:
    • chain of responsibility 责任链
    • command 按钮事件 等
    • interpreter 解释器
    • iterator 一般很少用了 主要容器 内部元素访问 统一接口
    • mediator 备忘录 比如eclipse的撤销
    • memento 
    • observer 观察者 如socket selector
    • state 状态机 
    • strategy   策略 用于算法等
    • template method 模版 慎用 模版泛滥很可怕 
    • vistor
      • 当一个对象对应很多与该对象不相关的操作,而你又不想污染该对象,那么你应该定义不同的vistor
      • 当你系统中存在很多对象,这些对象会对应很多操作,但是这些操作又不属于该对象
        eg:一颗抽象树,每个节点对应不同的操作,操作是一个具有一定共性的集合,那么可以将操作定义成一个vistor,下层有
        很多具体实现,当然每个vistor必须能够访问并且处理被传入的node。这样每个节点就对应N个vistor,而每个vistor对应N个node。
      • 总体而言,就是将不想关行为与实体自身分离
    • 汇总
      • 封装变化:
          • 一个strategy对象封装一个算法,将算法实现与上层调度分开,方便其他算法嵌入
          • 一个state对象封装一个由于状态发生变化而变化的行为
          • 一个mediator封装对象间的协议
      • 对象作为参数:
          • 将实体与行为进行分离,降低实体与操作的耦合度(不想关,别乱用)
          • 发送者与接受者进行解耦,command模式。eg: button 与  click(this)
          • 观察者模式 observer,observer只要向事件注册就OK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值