设计模式系列之——代理模式

代理模式指,通过代理的方式,为对象提供一种访问并控制该对象行为的方法。

在客户端不适合或者不能够直接引用一个对象时,可以通过该对象的代理对象来实现对该对象的访问。

可以将代理对象理解为客户端和目标对象之间的中介者。

比如我们在买房时,通常会有这么几个过程:找房 -> 看房 -> 网签 -> 交易完成,当然真正的过程比这要复杂得多,所以通常会找房产经纪人(中介),这个房产经纪人就是代理,这样我们不需要自己去找房子以及考虑房子后续的签约过程,我们只需要把需求(想要什么样的房子)告诉代理人即可,然后房产交易的事情也不用我们自己去银行跑,完全由代理帮助我们进行完成。

在这里插入图片描述

定义 Buyer 接口

public interface Buyer {
    void buyHouse(String type);
}

定义 BuyerImpl 实现类

public class BuyerImpl implements Buyer {
    @Override
    public void buyHouse(String type){
        System.out.println("I need a house, type is:" + type);
    }
}

定义代理类 Proxy

public class Proxy implements Buyer {
    private BuyerImpl buyer;
    public Proxy(){
        this.buyer = new BuyerImpl();
    }

    @Override
    public void buyHouse(String type){
        buyer.buyHouse(type);
        Integer house = findHouse(type);
        System.out.println("find a house by proxy, house ID is:" + house);
        netSign();
    }

    // 找房子
    private Integer findHouse(String type){
        Map<String, Integer> houseList = new HashMap<String, Integer>(){
            // 分别为房子类型和房子的ID
            {
                put("小区住房", 5013);
                put("别墅", 1010);
                put("四合院", 8373);
            }
        };
        return houseList.get(type);
    }

    // 网签
    private void netSign(){
        System.out.println("网签");
        System.out.println("交易完成");
    }
}

测试

public class testDemo {
    public static void main(String[] args) {
        Buyer buyer = new Proxy();
        buyer.buyHouse("四合院");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值