《设计模式》

策略模式(Strategy )

实例对于同一个方法选择
一旦创建实例,不要改变

观察者模式(Observer )

  • 被观察者(Observable)
  • 观察者(Observer)
  • 观察者先知道被观察对象
  • 让被观察对象知道自己在观察
  • 被观察者有一系列自己的属性和需要通知的观察者集合
  • 变化时通知被观察者
  • 观察者主动获取数据(当然也可以在通知时带上数据,不过这样比较繁琐)

装饰者模式(Decorator )

  • 装饰者和被装饰者继承同样的接口
  • 装饰者的一个属性为被装饰者
  • 装饰者可以完全替代被装饰者
  • 导致装饰链太长,不知到实质到底是谁

工厂模式(Factory )

简单工厂模式(Simple Factory )

工厂方法模式(Factory Method )

抽象工厂模式(Abstract Factory )

单例模式(单件模式,Singleton )

一个类只有一个实例

两种实现方法

  • 1个public static get方法,1个private static实例变量,隐藏构造方法
    • 调用get方法返回唯一的实例变量,在没有的时候创建
  • 类的全部方法全部定义为静态方法

命令模式(Command)

适配器模式(Adapter)

为了适应另一套接口,创造一个新类(内含一个需要被适配的类)

外观模式(Facade)

只暴露出出一部分方法

所有原则都应该在有帮助的时候在遵守

模板方法模式(Template Method)

父类提供 执行流程的方法 和 每个流程的默认方法
子类实现具体方法

迭代器模式(Iterator )

将遍历封装

组合模式(Composite Pattern)

从两个相关的类(如菜单和具体菜品)提取出相关的方法成为父类
而他们最为组件的一种类型
每一项成为组件(组合,叶节点,多个类选一)
最终成为倒树

状态模式(State )

与策略模式有相似

有一个状态机
内部存在多种状态类的实例,并保存当前状态
但状态会随着当前状态的调用而改变(调用一个方法时,会交给当前状态的同名方法)

状态类也有状态机,通过调用状态机的方法改变状态

代理模式(Proxy )

  • 远程代理(Remote Proxy)
  • 虚拟代理(Virtual Proxy)
  • 保护代理(Protection Proxy)
  • 防火墙代理(Firewall Proxy)
  • 智能应用代理(Smart Reference Proxy)
  • 缓存代理(Caching Proxy)
  • 同步代理(Synchronization Proxy)
  • 复杂隐藏代理(Complexity Hiding Proxy)
    • 外观代理(Facade Proxy)
  • 写入时复制代理(Copy-On-Write Proxy)

复合模式(Compound Pattern)

MVC(Model-View-Controller,模型-视图-控制器)

  • 结合了观察者模式,策略模式,组合模式。

Model 2

↓较不重要

桥接模式(Bridge )

生成器模式(Builder )

责任链模式(Chain of Responsiblity )

蝇量模式(Flyweight )

解释器模式(Interpreter )

中介者模式(Mediator )

备忘录模式(Memento )

原型模式(Prototype )

访问者模式(Visitor )

参考《Head First 设计模式(中文版)》

设计模式(Design Patterns)

  • 策略模式(Strategy Pattern)
  • 观察者模式(Observer Pattern)
  • 装饰者模式(Decorator Pattern)
  • 工厂模式(Factory Pattern)
    • 简单工厂模式(Simple Factory Pattern)
    • 工厂方法模式(Factory Method Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(单件模式,Singleton Pattern)
  • 命令模式(Command Pattern)
  • 适配器模式(Adapter Pattern)
  • 外观模式(Facade Pattern)
  • 模板方法模式(Template Method Pattern)
  • 迭代器模式(Iterator Pattern)
  • 组合模式(Composite Pattern)
  • 状态模式(State Pattern)
  • 代理模式(Proxy Pattern)
  • 复合模式(Compound Pattern)
    • MVC(Model-View-Controller,模型-视图-控制器)
    • Model 2
  • ↓较不重要
  • 桥接模式(Bridge Pattern)
  • 生成器模式(Builder Pattern)
  • 责任链模式(Chain of Responsiblity Pattern)
  • 蝇量模式(Flyweight Pattern)
  • 解释器模式(Interpreter Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 原型模式(Prototype Pattern)
    = 访问者模式(Visitor Pattern)

设计原则

  1. 封装变化
  2. 多用组合,少用继承
  3. 针对接口编程,不针对实现编程
  4. 为交互对象之间的松耦合设计而努力
  5. 对扩展开发,对修改关闭
  6. 依赖抽象,不要依赖具体类
  7. 只和朋友交谈
  8. 别找我,我会找你
  9. 类应该只有一个改变的理由
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值