JAVA设计模式-代理模式

打印 上一主题 下一主题

主题 510|帖子 510|积分 1530

JAVA设计模式-代理模式

一、介绍

代理模式是一种结构型模式,它指的是给某一个对象提供一个代理对象,并且由代理对象控制原有对象的引用,可以增强原有对象的功能以及降低系统的耦合度。生活中例如某品牌的代理商,我们买东西通过代理商购买,不是和厂家直接购买。代理模式有静态代理和动态代理,例如,我们使用线程时实现的Runnable接口是使用的静态代理,Spring中的AOP是使用的的动态代理。
二、相关角色


  • Subject: 抽象角色,一般是使用的是接口或者抽象类,里面定义了代理对象和被代理对象共同的接口。
  • Porxy: 代理对象,会实现或者继承抽象角色,并且会实现抽象角色中的接口,还会包含对被代理对象的引用,其中在实现抽象角色中接口时,可以增加其他操作,增强功能。
  • RealSubject: 真实对象,也就是被代理的对象,该对象也会实现抽象角色中的接口。
  • Client:客户端,调用代理对象。
三、类图


四、代码实现

我们就使用空调代理商来简单说明并实现代理模式,首先厂家是可以直接拿货售卖空调,代理商也是可以售卖空调,但是代理商售卖空调,有优惠、可以打折,售卖之后,包安装等,代理商售卖空调也是从厂家拿货售卖空调。
Subject
  1. /**
  2. * All rights Reserved, Designed By monkey.blog.xpyvip.top
  3. *
  4. * @version V1.0
  5. * @Package com.xpyvip.designpattern.proxy
  6. * @Description: 抽象接口
  7. * @Author: xpy
  8. * @Date: Created in 2022年10月15日 9:38 下午
  9. */
  10. public interface Subject {
  11.     /**
  12.      * 售卖空调操作
  13.      */
  14.     void action();
  15. }
复制代码
RealSubject
  1. /**
  2. * All rights Reserved, Designed By monkey.blog.xpyvip.top
  3. *
  4. * @version V1.0
  5. * @Package com.xpyvip.designpattern.proxy
  6. * @Description: 真实对象
  7. * @Author: xpy
  8. * @Date: Created in 2022年10月15日 9:42 下午
  9. */
  10. public class RealSubject implements Subject{
  11.     /**
  12.      * 模拟空调厂家售卖
  13.      */
  14.     public void action() {
  15.         System.out.println("厂家拿货,进行售卖");
  16.     }
  17. }
复制代码
ProxySubject
  1. /**
  2. * All rights Reserved, Designed By monkey.blog.xpyvip.top
  3. *
  4. * @version V1.0
  5. * @Package com.xpyvip.designpattern.proxy
  6. * @Description: 代理对象
  7. * @Author: xpy
  8. * @Date: Created in 2022年10月15日 9:44 下午
  9. */
  10. public class ProxySubject implements Subject{
  11.     /**
  12.      * 厂家,被代理对象
  13.      */
  14.     private RealSubject realSubject;
  15.     public ProxySubject() {
  16.         System.out.println("这个是代理类,空调代理商");
  17.         this.realSubject = new RealSubject();
  18.     }
  19.     /**
  20.      * 售卖空调
  21.      */
  22.     public void action() {
  23.         // 增强功能
  24.         // 售卖空调前操作
  25.         System.out.println("谈价格、给优惠、打折。。。");
  26.         // 厂家拿货,售卖空调
  27.         this.realSubject.action();
  28.         // 售卖空调后操作
  29.         System.out.println("包安装、售后");
  30.     }
  31. }
复制代码
Client
  1. /**
  2. * All rights Reserved, Designed By monkey.blog.xpyvip.top
  3. *
  4. * @version V1.0
  5. * @Package com.xpyvip.designpattern.proxy
  6. * @Description: 客户端
  7. * @Author: xpy
  8. * @Date: Created in 2022年10月15日 9:48 下午
  9. */
  10. public class Client {
  11.     public static void main(String[] args) {
  12.         Subject subject = new ProxySubject();
  13.         subject.action();
  14.     }
  15. }
复制代码
原文链接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi---dai-li-mo-shi

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表