![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 71
设计模式
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
设计模式:职责链模式
1、什么是职责链模式在职责链模式中,多个处理器依次处理同一个请求。一个请求先经过A处理器处理,然后再把请求传递给B处理器,B处理器处理完后再传递给C处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫作职责链模式在GoF给出的定义中,如果处理器链上的某个处理器能够处理这个请求,那就不会继续往下传递请求。实际上,职责链模式还有一种变体,那就是请求会被所有的处理器都处理一遍,不存在中途终止的情况2、代码实现1)、使用链表来存储处理器public abstract clas原创 2021-01-17 11:09:49 · 186 阅读 · 0 评论 -
策略模式及使用Spring实现策略模式+工厂模式
一、策略模式策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换1、策略模式主要角色主要角色如下:封装角色(Context):也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化抽象策略角色(Strategy):策略家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性具体策略角色(ConcreteStrategy):...原创 2020-01-31 09:37:18 · 7057 阅读 · 4 评论 -
设计模式:工厂方法模式与抽象工厂模式
一、工厂方法模式工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类1、工厂方法的主要角色抽象产品(Product):定义具体产品的公共接口具体产品(ConcreteProduct):继承抽象产品类并定义生产的具体产品抽象工厂(Creator):定义具体工厂的公共接口具体工厂(ConcreteCreator):继承抽象工厂类并定义创...原创 2020-01-30 15:12:58 · 485 阅读 · 0 评论 -
设计模式:模板方法
模板方法模式定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤1、模板方法的主要角色模板方法模式使用了Java的继承机制,其中,AbstractClass叫做抽象模板,它的方法分为两类:基本方法:由子类实现的方法,并且在模板方法被调用模板方法:实现对基本方法的调度,完成固定的逻辑ConcreteClass1和Conc...原创 2020-01-30 10:18:06 · 797 阅读 · 0 评论 -
设计模式:观察者模式
观察者模式也叫做发布订阅模式,观察者模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新1、观察者的主要角色Subject(被观察者):能够动态地管理观察者并通知观察者Observer(观察者):接收到消息后,对接收到的消息进行处理ConcreteSubject(具体被观察者):定义被观察者的业务逻辑,同时定义对哪些事件进行通知Co...原创 2020-01-30 09:31:16 · 273 阅读 · 0 评论 -
设计模式:原型模式与享元模式
一、原型模式原型模式是通过给出一个原型对象来指明所创建的对象的类型,然后使用自身实现的克隆接口来复制这个原型对象,该模式就是用这种方式来创建出更多同类型的对象原型模式是在内存二进制流的拷贝,要被直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点1、实现原型模式//实现Cloneable接口的原型抽象类Prototypepublic clas...原创 2020-01-28 17:29:53 · 3225 阅读 · 1 评论 -
Java多线程实战篇:单例模式与多线程
1、立即加载/饿汉模式// 立即加载/饿汉模式public class MyObject { private static final MyObject myObject = new MyObject(); private MyObject() { } public static MyObject getInstance() { return myObject; }}...原创 2019-02-05 17:35:15 · 527 阅读 · 0 评论 -
JDK动态代理与CGLib代理
一、JDK动态代理案例1)、使用步骤新建一个接口为接口创建一个实现类创建代理类实现java.lang.reflect.InvocationHandler接口测试2)、代码实现public interface Say { void say(String words);}public class SayImpl implements Say { @Override pu...原创 2019-03-04 14:37:18 · 310 阅读 · 0 评论