一、代理模式的初衷

不想让客户端直接访问具体实现接口,客户端不应该直接访问具体实现,一般会涉及到以下四个对象

  • 业务接口:定义客户端访问的接口,是实现类和代理类都需要实现的
  • 实现类:实现了业务接口,真正的实现是在这里
  • 代理类:同样实现了业务接口,一般都会关联一个实现类的实例,由它来调用实现类
  • 客户端:顾名思义,使用者,与代理类打交道,甚至都不知道具体实现类的存在。

二、代理模式设计图

三、代理模式的简单实现代码

BizInterface.java

package com.lipan.designpattern;

/*

 * @author:lipan

 * 

 * */

public interface BizInterface {

    

    public void doSomeBizWork();

 

}

BizProxy.java

package com.lipan.designpattern;

 

public class BizProxy implements BizInterface{

 

    private BizRealService obj;

    @Override

    public void doSomeBizWork() {

    

        if(obj == null){

            obj = new BizRealService();

        }

        

        System.out.println("do some non-biz work before real biz work");

        obj.doSomeBizWork();

        System.out.println("do some non-biz work after real biz work");

        

    }

 

}

BizRealService.java

package com.lipan.designpattern;

 

public class BizRealService implements BizInterface{

 

    @Override

    public void doSomeBizWork() {

        // TODO Auto-generated method stub

        System.out.println("Do some real work in Class BizRealService!");

    }

}

TestProxy.java

package com.lipan.test;

 

import com.lipan.designpattern.*;

 

public class TestProxy {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        BizProxy bp = new BizProxy();

        bp.doSomeBizWork();

    }

}

最新文章

  1. 在react native用到的javascript 的一些关键知识(整理中)
  2. 移动互联网广告 - 第十更 - 广告投放运营 DashBoard - 2016/12/10
  3. ffmpeg 音频转换: use ffmpeg convert the audio from stereo to mono without changing the video part
  4. HBase与MongDB等NoSQL数据库对照
  5. Code Review for SSIS package
  6. 递归模式学习(recursion)
  7. leetcode@ [139/140] Word Break & Word Break II
  8. 求助:IIS中部署WCF,生成的WSDL中怎么把“计算机名”改成IP==找到一个解决办法
  9. ORACLE查询数据库的锁表情况
  10. hbase分布式集群搭建
  11. java基础笔记(6)----面向对象的三大特性
  12. CSS中的ul与li样式详解 list-type
  13. javaEE REST 基于第三方框架Restlet
  14. CCF关于NOIP复赛网络申诉问题的公告
  15. Android学习之基础知识五—ListView控件(最常用和最难用的控件)
  16. eclipse中html编辑环境的搭建
  17. 奈奎斯特定理 and 香农定理
  18. 从SQL查询分析器中读取EXCEL中的内容
  19. Numpy 函数总结 (不断更新)
  20. python的强制转换(当出现 not supported between instances of 'str' and 'int' 的错误时)

热门文章

  1. Thinkphp5.0 的视图view的模板布局
  2. hiho一下 第四十九周 欧拉路
  3. Network-POJ3694(最小公共祖先LCA+Tarjin)
  4. 联想M7400打印机加粉墨了还是显示没有粉墨
  5. Django学习系列之captcha 验证码插件
  6. CentOS command
  7. react 项目实战(五)渲染用户列表
  8. Python全栈
  9. 使用 BenchmarkDotnet 测试代码性能 【Win10】单元测试中捕获异步方法的指定异常
  10. JavaScript 获得代码行号和脚本文件名