
设计模式
一只大马猴
既然选择了做这行,就要耐得住寂寞
展开
-
设计模式之:策略模式
策略模式,一般用来对某个功能根据不同的策略做不同的响应,实现过程很也简单。 将行为定义为策略接口,然后根据实际需要,我们去实现不同的具体策略。 然后通过在抽象类中持有策略行为的接口,子类在继承抽象类时,默认提供一种策略。 如果需要修改策略,只需要调用抽象类的设置策略方法即可。 举个栗子: 现在有一个教学行为策略的接口,TeachStrategy。 它有两个具体的实现: 教数学 M...原创 2019-12-20 17:34:47 · 165 阅读 · 0 评论 -
设计模式之:观察者模式
观察者模式通常用作一对多的通知,即多个观察者监听一个消息事件。 通常,我们可以在消息事件的主体中维护一个观察者列表。 在事件发生时,遍历自身维护的列表,将消息发布出去。 public interface Subject { //注册新的观察者 public boolean registerObserver(StudentObserver so); //移除现有的某个...原创 2019-12-20 14:28:55 · 129 阅读 · 1 评论 -
设计模式之:单例模式
单例模式:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式有三种:懒汉式单例,饿汉式单例,登记式单例。 1.懒汉式单例 public class SlackerSingleton { private static SlackerSingleton instance; private Slac...原创 2018-10-12 13:18:15 · 117 阅读 · 0 评论 -
设计模式之:模版模式
在我们平时的编码工作中,经常会有一些流程步骤基本相同,只是中间有部分细节不同的业务流程,比如我们自己要实现一个基于redis缓存的模版方法,在redis中存在指定值时,则返回redis中缓存的数据;如果redis中不存在,则查询db,并把查询所得缓存起来,并返回查询所得。这个例子就是用模版模式再好不过了,直接上代码: 1.定义模版类 @Component public abstract cl...原创 2018-10-22 14:00:53 · 161 阅读 · 0 评论 -
设计模式之:静态代理
静态代理模式,完全就是由我们自己实现的代理方法,一般是用在方法调用前后需要做一些其他操作的情况下; 直接上代码: 1.定义代理接口 public interface MoveAble { public void move(); } 其实就是定义一个普通的接口而已。 2.实现代理功能 public class CarProxy implements MoveAble { p...原创 2018-10-22 14:26:15 · 177 阅读 · 0 评论 -
设计模式之:动态代理之JDK动态代理
JDK动态代理的两个核心分别是InvocationHandler和Proxy。 下面写一个demo: 1.定义一个统一接口 public interface MoveAble { public void move(); } 2.定义接口的实现 public class Car implements MoveAble { @Override public void move...原创 2018-10-21 22:29:36 · 212 阅读 · 0 评论 -
设计模式之:动态代理之CGLIB动态代理
cglib代理需要实现MethodInterceptor接口,继续上demo: 1.定义目标代理类: public class Train { public void move() { System.out.println("火车行驶中..."); } } 2.实现代理类 public class CglibProxy implements MethodIntercept...原创 2018-10-21 22:35:41 · 236 阅读 · 0 评论