代理模式
Posted guanbin-529
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代理模式相关的知识,希望对你有一定的参考价值。
一、代理模式的基本介绍
- 代理模式:为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上增强额外的功能操作,即扩展目标对象的功能。
- 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象
- 代理模式有不同的形式,主要有三种:静态代理、动态代理和Cglib代理
二.静态代理:
- 创建ITeacherDao接口
package com.design.design.proxy.staticproxy; /** * @author: GuanBin * @date: Created in 下午11:52 2019/7/20 */ public interface ITeacherDao /** * 授课的方法 */ void teach();
- TeacherDao、TeacherDaoProxy都要实现IITeacherDao接口
package com.design.design.proxy.staticproxy; /** * @author: GuanBin * @date: Created in 下午11:56 2019/7/20 */ public class TeacherDao implements ITeacherDao @Override public void teach() System.out.println("*****老是正在授课*****");
package com.design.design.proxy.staticproxy; /** * @author: GuanBin * @date: Created in 下午11:58 2019/7/20 */ public class TeacherDaoProxy implements ITeacherDao private ITeacherDao target; public TeacherDaoProxy (ITeacherDao target) this.target=target; @Override public void teach() System.out.println("开始代理"); target.teach(); System.out.println("提交代理");
4.Client中获取代理对象,并执行被代理类的teach方法
package com.design.design.proxy.staticproxy; /** * @author: GuanBin * @date: Created in 上午12:05 2019/7/21 */ public class Client public static void main(String[] args) //创建目标对象(被代理对象) TeacherDao teacherDao = new TeacherDao(); //创建代理对象,同时将被代理对象传递给代理对象 TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(teacherDao); //通过代理对象,调用到被代理对象的方法 //即:执行的是代理对象的方法,代理对象再去调用目标对象的方法 teacherDaoProxy.teach();
以上是关于代理模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式代理模式 ( 代理模式结构 | 客户端 | 主题对象 | 被代理对象 | 代理对象 )
设计模式 结构型模式 -- 代理模式(动态代理(CGLIB动态代理)三种代理的对比(静态代理动态代理(JDK代理和CGLIB代理)优缺点使用场景))