logo资料库

设计模式总结.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
设计模式总结
设计模式总结 参考:http://www.runoob.com/design-pattern/flyweight-pattern.html 1. 创建型模式:5 种 (1) 普通工厂模式: Shape 接口、circle 实现类、shapeFactory 工厂类 应用场景:数据库连接、日志记录 (2) 抽象工厂模式 Shape 接口、circle 实现类、color 接口、red 实现类、 AbstractFactory 抽象工厂类/接口、ShapeFactory 继承/实现抽象工厂、ColorFactory 继承/实现抽象工厂、FactoryProducer 工厂生产器类 应用场景:产品组(如时尚装、商务装) (3) 单例模式:构造函数是私有的 饿汉式:在 classloader 类加载时实例化好了,不存在多线程同步问题,不用加 锁,效率高,但是浪费内存。 懒汉式:synchronized 加锁 双检锁式:volatile synchronized 加锁 静态内部类:内部类实例化,初始化时不加载内部类,调用方法时加载内部类。 枚举:自动实现序列化 常用模式:饿汉式,特殊情况的考虑其他模式。 (4) 建造者模式:builder 场景:去肯德基点餐,可以单点,也可以点套餐,点餐就是一个建造订单的过 程 (5) 原型模式:property,用于创建重复对象,一般和工厂模式结合使用。 应用场景:细胞分裂、克隆 对象实现 cloneable 接口 缓存对象(hashMap) 从缓存对象中获取对象的克隆 2. 结构型模式:7 种 (1) 适配器模式:Adapter Mp3 Mp4、Mp5 被适配者和适配者没有层次关系,比如将 110 伏电压适配成 220 伏电压,他们 是一对一关系 (2) 桥接模式:bridge 创建桥接口实现,创建抽象类和具体功能实现,抽象类中放入桥。 将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两 者之间搭建桥梁,实现桥接 定义一个桥接口,使其与一方绑定,这一方的扩展全部使用实现桥接口的方式。 定义一个抽象类,来表示另一方,在这个抽象类内部要引入桥接口,而这一方 的扩展全部使用继承该抽象类的方式。
其实我们可以发现桥接模式应对的场景有方向性的,桥绑定的一方都是被 调用者,属于被动方,抽象方属于主动方。 应用场景:JDBC 实现,接口内部是对接口的多个实现来具体连接哪个数据库(被 动方桥绑定数据库),对外提供一个统一的接口调用(主动方调用) (3) 组合模式 (4) 装饰器模式 被装饰者和装饰者有层次关系,比如将字节流包装成字符流,一对一关系。 (5) 外观模式 (6) 享元模式 (7) 代理模式 两种方式:1.JDK,基于接口代理 2.CGLIB,基于类的实现 1.JDK:Proxy.newInstance(…)创建代理 3. 行为型模式:12 种 (1) 观察者模式: 被观察者接口或主题(Subject),接口实现:添加观察者、删除观察者、通知 观察者接口(observer),接口实现:变化更新自己 被观察者:主题/发布/发送邮件 观察者:订阅/接收邮件 (2) 策略模式 (3) 模板方法模式 (4) 迭代子模式 (5) 责任链模式 Chain:filter 多个过滤器处理一个事件,每个过滤器只处理自己的职责,过滤器对 象一个链一个,形成链的结构。 filter1.nextFilter(filter2); filter2.nextFilter(filter3); filter1—>filter2—> filter3 应用场景:1. js 冒泡事件 2.tomcat 的 encode 处理 3.servlet 的 filter (6) 命令模式 (7) 备忘录模式 (8) 状态模式 (9) 访问者模式 (10) 中介者模式 (11) 解释器模式
分享到:
收藏