代理模式实现

代理模式实现步骤

  1. 定义一个抽象的主题类。
  2. 定义一个具体的实现主题的实现类,实现里面的具体方法。
  3. 定义一个代理类,将需要对具体主题实现类的方法进行扩充。

案例

我们以建立订单,在订单方法的开始和结束的时候添加日志为例子。我们需要建立一个 net.haicoder.proxy 包,在该包下面建立 IOrderService.java 接口和 OrderCreate.javaOrderCreateProxy.javaTestMain.java 类。

文件创建完毕,目录结构如下图:

20 代理结构代码结构图.png

IOrderService.java 代码如下:

package net.haicoder.proxy; public interface IOrderService { Integer createOrder(Object param); }

OrderCreate.java 代码如下:

package net.haicoder.proxy; public class OrderCreate implements IOrderService { public Integer createOrder(Object param) { System.out.println("创建订单"); return 1; } }

OrderCreateProxy.java 代码如下:

package net.haicoder.proxy; public class OrderCreateProxy implements IOrderService { OrderCreate orderCreate; public OrderCreateProxy() { orderCreate = new OrderCreate(); } public Integer createOrder(Object param) { before(); Object object = null; orderCreate.createOrder(object); after(); return null; } private void before() { System.out.println("创建订单前"); } private void after() { System.out.println("创建订单后"); } }

TestMain.java 类如下:

package net.haicoder.proxy; public class TestMain { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); OrderCreateProxy orderCreateProxy = new OrderCreateProxy(); Object param = null; orderCreateProxy.createOrder(param); } }

程序运行后,控制台输出如下:

21 代理结构运行结果图.png

代理模式总结

设计模式中代理模式可以将具体的实现对象给隔离开,让客户端只获取到代理对象,让具体对象只关心自己业务逻辑,各司其职。