设计模式学习笔记

特性:封装,多态(设计时多态【重载】+运行时多态【根据实例类型调用不同对方法】),继承
简单工厂,工厂、抽象工厂 — 封装

单例模式;
    不存在
        创建
    否则
        返回现有实例
    问题一:若每次获取实例时都要lock一下,性能较慢。
    问题二:第二个进入创建实例对象对代码时,需要知道第一个线程是否创建了实例。

策略模式:多态
装饰模式:继承 ,(装饰器(装饰器(核心功能)))
        —-区分核心功能和附加功能
代理模式:继承,增加更多功能   
        —-((代理者(被代理者)),虚拟代理即占位,远程代理即隔离,安全代理即过滤权限,只能代理即添加额外功能
模板方法:多态+继承,抽象公共行为模式或逻辑,子类实现具体细节
        —–abstractClass — subCl根据aass抽取公共部分、框架结构
外观模式:封装+继承,将每个类的方法重新组合
        —-D(A.c()+B.c()+C.c()),分层之后对重新组合
建造者模式:封装,将构造逻辑和构造细节分离
        —-大体框架一样,但细节部分不一样
观察者模式:解耦,状态里存放n个观察者,状态改变类,通知所有对象执行update()方法。
        —-条件发生时,出发多个对象做出反应。其实就是event+handler。同时,handler可以单独抽象成类。
状态模式:封装+解耦,将不同对if状态和action封装成一个类
        —-本质就是封装
适配器模式;其实就是代理模式
备忘录模式:将临时的状态放到一个类而已
组合模式:抽象(继承),将子类和父类、整体和部分做成一样对外观。
迭代器模式:封装,将对集合对遍历行为抽象为类。
桥接模式:多用合成/聚合,少用继承。
        —-将差异部分单独成类。

继承:
    建造者模式,代理模式,适配器模式,模板方法,
封装:
    外观模式,状态模式,迭代器模式
多态:
    策略模式,
其他:
    观察者模式,备忘录模式,组合模式,单例模式,
    

1、创建模式:Factory(工厂模式)、Singleton(单态)、Builder(建造者模式)、Prototype(原型模式)、工厂方法模式。
2、结构模式:Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)。
3、行为模式:Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Interpreter(解释器模式)、
Strategy(策略模式)、State 、Observer(观察者模式)、Visitor(访问模式)、Command(命令模式)。

享元模式:抽象类(共同的行为)、工厂(维护一个池)、

Iterator:将迭代方法独立出来成为一个类。
Templat:其实就是抽象

理解单例模式对五种创建模式
理解享元模式、桥接模式、

Author: bkdwei