随笔分类 - 设计模式
设计模式学习笔记
摘要:1.19 备忘录模式-Memento 记录状态,便于回滚 使用场景:例如磁盘快照,虚拟机快照,游戏存档等 Java中可以实现标记性接口,序列化需要存盘的类的状态 public class A implements Serializable { int a = 1; int b = 2; B b =
阅读全文
摘要:1.14 构建器模式 - Builder 用于构建负责复杂对象,比如构建一个对象,需要传50个参数进去 例如我的世界中地形的类,用于构建一块地形,需要传入墙,草,陷阱等等许多参数,那么可以定义构建器接口,该接口有构建墙,构建草,构建陷阱,最后构建地形几个接口方法。每个接口把this返回,可以链式调用
阅读全文
摘要:1.11 代理模式-Proxy(重要) 1.11.1 聚合方式(静态代理) 该代理需要和被代理对象实现相同的接口 class CarProxy implements Movable { // 可改进为 Movable m; Car car; public CarProxy (Car car) { t
阅读全文
摘要:1.8 观察者模式-Observer(重要) 定义观察者接口,可以有多个观察者实现该接口。观察者经常和责任链一起使用,观察者可以当做责任链的一环。 一般事件都是使用的观察者模式,比如键盘事件,鼠标事件等 事件源对象,观察者 1.8.1 Spring的AOP Spring的Aop就可以当成一个观察者模
阅读全文
摘要:1.6 责任链模式 使用场景:例如在论坛上发表文章上传到服务器,我们要进行脱敏,检查是否有黑客代码等,需要进行过滤。如果过滤都写在一块,一方面不方便扩展,一方面代码臃肿(有可能每一种过滤的代码特别多) public static void main(String[] args) { Msg msg
阅读全文
摘要:1.3 工厂模式 任何可以产生对象的方法或类,都可以称之为工厂,单例也是一种工厂,为什么有了new之后,还需要工厂呢?以汽车举例: // 移动的接口 interface Moveable() { void go(); } // 其他交通类实现移动类接口,例如这里的小汽车 class Car inpl
阅读全文
摘要:1.1 单例模式-singleton Spring的Bean工厂就是单例模式,项目中自己写的情况越来越少 1.1.1 工程中最常用版本-饿汉式 /** * 优点:线程安全 * 缺点:不管用到与否,类装载时就完成实例化 */ public class Singleton_01 { private st
阅读全文