对代理模式的认识(1)

本文介绍了代理模式的基本概念,它用于通过代理对象控制对实际对象的访问。在C/S场景中,代理对象先接收客户端请求并进行过滤,有效请求才传递给服务端。代理模式适用于保护业务对象的接口和数据,代理对象和实际对象具有相同接口,可互相替代。文中以手机销售为例,解释了代理模式的三个角色:抽象功能、代理对象和实际对象,并给出了Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理模式主要用于通过提供代理对象来控制对实际对象的访问。比如在C/S场景中应用代理模式的时候,客户端的请求首先会发送给服务端代理,服务端代理对象会对客户端的请求进行简单的过滤,对于无效的请求就会直接返回,而不用发送给服务端,而对于有效的请求则会发送给服务端进行处理。

代理模式适用于控制访问那些不想暴露接口和数据给外部的业务对象 或者不方便被其他对象直接引用的业务对象,这些业务对象只需要通过代理对象作为中介和外部的对象进行交互。

代理对象和实际对象具有相同的接口,在实际的应用场景中它能代替实际对象的功能。

代理模式中主要有三种角色:抽象功能,代理对象,实际对象

抽象功能代表着实际对象所拥有的功能,代理对象和实际对象都会实现抽象功能

代理对象是用来代理实际对象的,他会持有一个实际对象的引用,并且实现和实际对象相同的抽象功能。

实际对象就是我们需要控制访问的对象,它实现了抽象功能。它让代理对象来代表它处理和外部对象的交互

我以手机厂商销售手机来说明代理模式,手机厂商销售手机的时候会寻找代理商,这些代理商帮助手机厂商销售。那么手机厂商就是代理模式中的实际对象,手机厂商的代理商就是代理对象,销售手机的行为就是抽象功能,这三个角色的关系如下图所示

 

PhoneFactory,代表实际对象,PhoneFactoryProxy,代表代理对象,IPhoneFactoryBehavior,代表抽象功能。

PhoneFactory 和 PhoneFactoryProxy 都实现 代表抽象功能的接口 IPhoneFactoryBehavior .PhoneFactoryProxy 持有一个 PhoneFactory 的引用。

具体实现如下所示

IPhoneFactoryBehaviro.java

 

    public interface IPhoneFactoryBehavior {

public int sellPhone();

 

}

PhoneFactory.java

 

    public class PhoneFactory implements IPhoneFactoryBehavior {

 

@Override

public int sellPhone() {

// TODO Auto-generated method stub

return 1;

}

 

}

PhoneFactoryProxy.java

 

   public class PhoneFactoryProxy implements IPhoneFactoryBehavior {

PhoneFactory mPhoneFactory;

public PhoneFactoryProxy(PhoneFactory phoneFactory){

this.mPhoneFactory = phoneFactory;

}

public PhoneFactoryProxy (){

this.mPhoneFactory = new PhoneFactory();

}

 

@Override

public int sellPhone() {

// TODO Auto-generated method stub

return mPhoneFactory.sellPhone();

}

 

}

实际对象和代理对象实现相同的抽象功能,所以我们在需要使用实际对象的地方都可以用代理对象来代替。代理对象在外部对象和实际对象之间起了一个中介作用。代理对象可以对外部对象的请求进行预处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值