(8)代理模式

一、代理设计模式概述 

        为另一个对象提供一个替身或占位符,以控制对这个对象的访问

二、特点

  • 代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。
  • 代理类负责请求的预处理、过滤,将请求分配给委托类处理,以及委托类处理完请求的后续处理。

三、优点

低耦合,易扩展,灵活度高

四、缺点 

间接访问可能会延迟请求相应,增加工作量

五、代码实例

示例:这里银行是代理类,上交所是委托类,客户不能直接访问委托类,通过代理类访问

/**
 * 股票接口
 */
public interface TradeStock {
    void byStock(int money);
}
/**
 * 上海交易所是委托类
 * 只有交易所才能买股票
 * 代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。
 * 代理类负责请求的预处理、过滤,将请求分配给委托类处理,以及委托类处理完请求的后续处理
 *
 */
public class ShanghaiExchange implements TradeStock {
    @Override
    public void byStock(int money) {
        System.out.println("上交所:开始买入股票");
        System.out.println("交易金额:" + money);
        System.out.println("上交所:买入结束");
    }
}
/**
 * 银行充当代理类
 */
public class Bank implements TradeStock {
    //代理类注入委托类
    private ShanghaiExchange shanghaiExchange;

    /**
     * 代理类实现买股票的方法,其实还是让银行买
     */
    @Override
    public void byStock(int money) {
        System.out.println("银行:我替你买股票");
        //委托类
        shanghaiExchange = new ShanghaiExchange();
        shanghaiExchange.byStock(money);
        System.out.println("银行:买完了");
    }
}
/**
 * 客户端
 */
public class Client {
    public static void main(String[] args) {
        //创建代理类
        Bank bank = new Bank();
        //代理类买股票
        bank.byStock(1000);
    }
}
银行:我替你买股票
上交所:开始买入股票
交易金额:1000
上交所:买入结束
银行:买完了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值