设计模式速记(Java版)
2019-3-29 liuyingcong 安卓开发
创建型:
单例模式:确保一个类只有一个实例。懒汉式、饿汉式。
工厂方法模式:用产品的泛型作为工厂方法的参数,方法内用反射创建产品对象。
抽象工厂模式:生产N类产品,每类N种。每个工厂对应一类,每个产品对应一个方法,通过new返回对象。
例如:工厂A生产一级铅笔和橡皮,工厂B生产二级铅笔和橡皮。
建造者(builder)模式:为对象选装不同的配件。
例如:okhttp的创建过程。
原型模式:克隆(clone)现有对象。
结构型:
适配器(adapter)模式:A想调用B、C功能相同但名字不同的方法,适配器转换使其相同。
例如:电源适配器,把不同的输入电压转换成相同的输出电压。
装饰模式:一层层的给原始类增加功能。
例如:java文件流。
桥接模式:颜色类树、形状类树各自演化,在顶层,形状基类调用了颜色接口,就好像一座桥。
例如:用不同颜色画不同形状。
组合模式:文件树,中间文件夹可以包含文件夹或文件。
例如:文件夹系统。
外观模式:一个类封装一组类的方法,使用者只要调用这一个类即可。
例如:秘书封装了酒店的订房方法、机场的订票方法、死机的开车方法,老板只给秘书命令
代理模式:代理类A与被代理类B主方法相同,A在主方法中夹带私货。
例如:增加打印日志的功能。
享元模式:池技术的实现方式。享元工厂通过关键字查询享元对象,没有就创建并保存。
例如:线程池。
行为型:
责任链模式:如果本对象处理不了就传递给下一个。
例如:财务审批中的超过多少元就交给下一个人处理。
命令模式:回调。回调函数的参数是对象,叫作命令。
例如:设置点击事件,参数中的action就是命令。
解释器模式:递归地对文法进行解释。
例如:编译器。
迭代器模式:迭代接口有next()和hasnest()方法,遍历一组对象中的各个元素。
例如:集合Collection。
访问者模式:对迭代器模式的扩充,可以遍历不同的对象,执行不同的操作。
中介者模式:业务类之间的信息和动作通过中介者传播,中介者和业务类互相持有引用。
例如:婚姻介绍。
备忘录模式:将一个对象备份,以后可以恢复到原先保存的状态。
例如:数据库事务的回滚。
观察者模式:一对多,一方改变,多方收到通知。
策略模式:如排序,每种排序算法封装成一个对象,使用时可以切换。多方案切换。
状态模式:想执行行为A时,先切换到状态A,让状态A执行行为A。
模板方法模式:定义一个算法骨架,将一些步骤延迟到子类中,使得子类不改变一个算法的结构即可重新定义算法的某些步骤。