代理模式

代理模式的分类书上已经说的很详细了,我在这里就不赘述

1、代理模式的定义

        代理模式——就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。例如:电脑桌面的快捷方式就是一个代理对象,快捷方式是它所引用的程序的一个代理。

2、代理模式的类图

  • Subject是公共的抽象类,能够声明所有子类的引用,
  • Proxy类为代理类,代理类内部含有对真实类的引用,从而可以操作真实对象
  • RealSubject为真实类,定义了代理角色所代表的真实对象

java代码如下:

package 代理模式;

 

public class Proxymode {

 

   @SuppressWarnings("unused")

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      Subject a1;

      a1 = new Proxy();

      a1.request();

   }

 

}

 

abstract class Subject {   //定义抽象类

   public abstract void request();

}

 

class RealSubject extends Subject{

   public void request(){

      System.out.println("这是一个真实的类的调用");

   }

}

 

class Proxy extends Subject{

   private RealSubject realsubject;

   @Override

   public void request() {

      // TODO Auto-generated method stub

      System.out.println("这是一个代理类的方法调用");

      try {

          realsubject.request();//调用RealSuject类中的request

          System.out.println("真实类调用成功!");

      }

      catch(Exception e)

      {

          System.out.println("真实类调用失败!");

      }

   }

   public Proxy() {

      realsubject = new RealSubject();//构造初始化realsubject

   }

   public void prerequest() {

      System.out.println("我好像忘了真实类的方法");//实现prerrequest方法

   }

   public void postrequest() {

      System.out.println("哦!真实类的方法是这样的啊1");//实现postrequest方法

   }

}

4、代理模式的优点

  • 代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
  • 代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。
  • 职责清晰,真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的作用。
  • 高扩展性。
  • 安全性高。

5、反思

  • 由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢。
  • 实现代理类也需要额外的工作,从而增加了系统的实现复杂度。
  • 不适用于小系统开发,会有大量代码冗余。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值