JAVA中的代理模式(静态代理)

JAVA中的静态代理模式

代理模式就是为其他对象提供一种代理以控制对这个对象的访问;在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

简单理解:中介都知道吧,你想买房子,但是你没时间去找房子,你得上班;但是你找了中介,中介帮你去找房子,找到房子之后,你可以去看房子,看看房子有那些电器。画图表示一下。

在这里插入图片描述
因为 我找了中介的原因,所以我和中介都有一个目的,那就是找房子:房子找到了,是中介(代理类)帮我找到的,我(被代理类)自己本身并没有找,但是我可以在找房子这件事中穿插其他的事:比如吃饭(eat)、散步(walk);

把找房子抽象出来,变成一个接口,

声明一个SearchRoomInterface 接口来表示找房子的目的:
在这里插入图片描述
声明一个中介类,让中介类实现SearchRoomInterface接口,完成找房子的动作:
在这里插入图片描述
声明一个Me类,也要实现SearchRoomInterface的接口,这里的重点事想办法使用中介找房子的方法,把找房子这个事暴露出来,让中介去完成业务

在这里插入图片描述
重点在在这里:

    private SearchRoomInterface searchRoomInterface;

    //构造器的形参列别为Agency类型的参数
    public Me(Agency agency) {
        //把中介类的agency对象赋值给了 SearchRoomInterface
        //因为 Agency 类实现了接口,通过赋值,那么searchRoomInterface就是 Agency类的对象,可以调用Agency的方法
        this.searchRoomInterface = agency;
    }

最后实现效果:
在这里插入图片描述
在这里插入图片描述
我们就实现了自己虽然也是想找房子,但是通过代理的方式,让中介去找,把这个业务让中介类去完成。
全部代码:

/*
把找房子的动作抽象成一个接口
 */
public interface SearchRoomInterface {
    void searchRoom();
}

/*
声明一下中介这个类,
要找房子所以要实现接口
 */
class Agency implements SearchRoomInterface {

    @Override
    public void searchRoom() {
        System.out.println("拿到用户的请求,中介执行找房子的动作");
    }
}
/*
声明一下自己,因为也要找房子所以也要实现接口
 */

class Me implements SearchRoomInterface {

    @Override
    public void searchRoom() {
        //虽然我要找房子,但是中介已经帮我实现了,
        // 所以这里要使用到中介类中的找房子的方法
        //使用中介的找房子的方法就要存在中介Agency的对象,
        //所以我们要拿到这个对象,找房子之前我可以干点其他的,比如说吃饭,散步
        eat();
        walk();
        searchRoomInterface.searchRoom();
    }

    private SearchRoomInterface searchRoomInterface;

    //构造器的形参列别为Agency类型的参数
    public Me(Agency agency) {
        //把中介类的agency对象赋值给了 SearchRoomInterface
        //因为 Agency 类实现了接口,通过赋值,那么searchRoomInterface就是 Agency类的对象,可以调用Agency的方法
        this.searchRoomInterface = agency;
    }


    public  void eat(){
        System.out.println("找房子之前吃了点饭");
    }
    public void walk(){
        System.out.println("找房子之进行了散步");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangguan96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值