代理模式Proxy Design

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

代理模式是对象的结构模式,操作的目标主要是类对象

下面是比较经典又精简的一个例子:

/*
 * 代理模式
 */
package test_designPattern;

//抽象角色:
abstract class Subject
{
    abstract public void request();
}


//真实角色:实现了Subject的request()方法。
class RealSubject extends Subject
{
    public RealSubject()
    {

    }

    public void request()
    {
        System.out.println("From real subject.");
    }
}


//代理角色:
class ProxySubject extends Subject
{
    private RealSubject realSubject; //以真实角色作为代理角色的属性

    public ProxySubject()
    {
       
    }

    public void request() //该方法封装了真实对象的request方法
    {
        preRequest();
        if(realSubject == null)
        {
            realSubject = new RealSubject();
        }
        realSubject.request(); //此处执行真实对象的request方法
        postRequest();
    }

    private void preRequest()
    {
        //something you want to do before requesting
    }

    private void postRequest()
    {
        //something you want to do after requesting
    }
}

//测试
public class test_Proxy_pattern
{
    public static void main(String[] args)
    {
        Subject sub=new ProxySubject();
        sub.request();
    }
}

代理模式将原来类的真实的操作从调用者的视野里移开,可能还增加了一些调用者觉察不到的操作,不过从类设计者的立场来看这些都不影响调用者使用原先类的功能,为了保护一个类而多生成一个新类,不敢说思想十分正确,至少感到拐了一个弯才实现自己的目的有些不爽。 可能代理模式真正发挥威力的地方是从此衍生的动态代理方法吧。

代理模式(Proxy Design Pattern)及代码实现 什么是 代理模式? 代码中的例子(何时该使用此模式): 该模式关键的角色: 该模式的主要优缺点如下: 和 其他模式 的 比较: 示例代码部分 总结: 相关链接: ... 阅读详情

相关推荐

Proxy Design Pattern 代理设计模式

代理设计模式,这个模式很多用于服务器客户端之类的,上网也经常使用代理之类的,想起来感觉是很复杂的,不过这个设置模式本身是很简单的。 就是一个类调用另外一个类的函数,客户调用的是一个类,而实际的工作是由另外一个类做的。 体现这个设计模式的代码: #include class RealObj { public: virtual void handleReq() = 0; };

靖空间 1480

Java代理模式(Proxy Design )

1. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到三个角色: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对

小江湖 460

设计模式 代理模式Proxy

它的一个主要作用在于执行目标对象的方法之前和之后可以执行一些其他的操作,同时不会直接持有目标对象的引用。

黄勇的博客 468

Proxy Design Pattern(代理设计模式)

转自:http://www.codeproject.com/Articles/186001/Proxy-Design-Pattern

smilestone322的专栏 1306

代理模式(Proxy Design Pattern )-深入浅出

jdk代理和CGLIB代理:使用CGLib实现动态代理,CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,在JDK1.6之前比使用Java反射效率要高。唯一需要注意的是,CGLib不能对声明为final的类或者方法进行代理,因为CGLib原理是动态生成被代理类的子类。

qq_74092815的博客 1322

代理模式 Proxy Design Pattern

Proxy 代理模式 Provide a surrogate or placeholder for another object to control access to it.Use an extra level of indirection to support distributed,controlled, or intelligent access.Add a wrapper a

xiaobaiooo的专栏 752

设计模式之代理模式Proxy Design Pattern)

代理模式Proxy Design Pattern)是在不改变原始类(或叫被代理类)输入输出的前提下,通过引入代理类来给原始类附加功能。这个附加功能对于调用者是无感知的。调用者不能直接接触到原始类,而是通过代理类来调用原始类的功能。 从设计原则来分析代理模式的作用: 接口隔离原则:代理类可以只代理原始类部分功能,隔离调用者不需要的功能。 开闭原则:可以在代理类增加附加功能,原始类则不需要修改。 单一职责原则:原始类专注他的职责,代理类专注附加功能。避免与原始类职责无关的附加功能与原始类进行耦合。

xjj1314的专栏 445

Design Pattern—— static proxy pattern 静态代理模式

抽象角色: package com.java.proxy; public interface AbstractSubject { public abstract String getMoney(); } 真实角色: package com.java.proxy; public class RealSubject implements AbstractSubject { @Ov

u013147914的专栏 603

设计模式 Design Parttern ——代理模式Proxy

设计模式 Design Parttern ——代理模式Proxy

leeidea的专栏 443

【设计模式】JAVA Design Patterns——Proxy代理模式

在最一般的形式上,代理是一个类,它充当与其他对象的接口。代理是客户端调用的包装器或代理对象,以访问后台的实际服务对象。在代理中,可以提供额外的功能,例如在对实对象的操作占用大量资源时进行缓存,或者在对实对象的操作被调用之前检查前提条件。想象有一个塔,当地的巫师去那里学习他们的法术。这里的代理就代表的塔的功能并添加访问控制。代理适用于需要比简单指针更广泛或更复杂的对象引用的情况。为另一个对象提供代理或占位符以控制对其的访问。使用代理模式,一个类代表另一个类的功能。创建一个简单的巫师类。然后这是进入塔的场景。

CSBIGDOG的博客 1431

Design Pattern学习笔记之代理模式(the Proxy Pattern)

Design Pattern学习笔记之代理模式(the Proxy Pattern) 1.    引子--Whois? 好警察还是坏警察?你是个好警察,你为每一个服务请求者提供友好、优质的服务,但是这样的话,你忙不过来,每个人都找你,特别需要你服务的人反倒获取不到服务。怎么办?一般的情况下,我们还需要一个“坏”警察,由他来过滤掉一部分意义不大的服务请求,换句话说,这个“坏”警察只是控制对“好”

wqh807020的专栏 700

设计模式学习—代理模式(Proxy Design Pattern)

代理模式的学习

闲鱼的博客 364

php代理模式(proxy design)

结构模式最后一个,接着进入行为模式。 <?php /* The proxy design pattern functions as an interface to an original object behind the scenes. It can act as a simple forwarding wrapper or even provide additional f...

weixin_30919429的博客 340

Proxy Design Pattern(代理模式

为什么80%的码农都做不了架构师?>>> ...

weixin_33860147的博客 88

Design Pattern_Proxy(代理模式)

这个模式非常有用,可以执行一些权限检查,资源调配的工作! 参考jdon:http://www.jdon.com/designpatterns/designpattern_proxy.htm 这里面还有个例子非常好,用到了singleton,factory,proxy多个模式,很值得学习

布莱克洛 643

Core Design Patterns(2) Proxy 代理模式

VS 2008 代理模式使得我们可以通过引入一个代理对象来控制另一对象的创建及访问。 1. 模式静态类图 2. 应用 现在有一个用于应用程序写文本日志的组件,创建这个组件的一个实例的时候,需要告诉它当前应用程序的名称,组件根据不同的应用程序做不同的处理(如,不同的应用程序写文本日志到不同文件夹),现在,我建立了一个应用程序,使用这个组件来写文本日志,但是如果...

weixin_30338461的博客 77

设计模式笔记 – Proxy 代理模式 (Design Pattern)

这两天在学习Spring框架的时候,因为AOP涉及到代理、动态代理等相关概念,听着好像不太理解,因为之前也没怎么学过设计模式的知识。所以在网上搜索到一些前人的技术笔记,借来参考。 代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的结构图: 代理模式涉及到的角色: 抽象角色(Subject):定义ProxySubject和Re

qq_15654859的博客 266

设计模式之-代理模式Proxy Design Pattern)

当我们要提供的功能控制的访问。比方说,我们有一个可以在系统上运行一些命令的类。现在,如果我们在使用它,没有任何问题,但如果我们想要这个程序给客户端应用程序,它可以有严重的问题,因为客户端程序可以发出命令来删除一些系统文件或更改了某些设置,这些操作并不是你想要的。这个时候创建代理类可以限制程序访问某些命令。 Java是以接口为设计原则,这里是我们的接口和实现类。 Comm...

weixin_30675247的博客 142

《Head First Design Patterns》笔记十三:代理模式Proxy Pattern)

  概念      代理模式很好理解的一个模式,同时也是应用十分广泛的一个模式。比如常见的远程网络调用。远程客户端调用远程服务端机器的应用。给客户的感觉好像就是在本机上操作一样,这其中就是代理在做工。      我们先看uml图     客户直接调用代理,代理再通过中间层实现对真实事务的调用。使用接口的目的是为了更加透明的操作对象。 实例    我们来建一个

imfzp的专栏 1402
上一篇: VC++ Studio使用技巧
下一篇: 终于被手机中奖的骗子看上了[13055464137]
yangbc
博客等级 码龄23年 5粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值