设计模式之代理模式(一)

在这里插入图片描述
代理模式是一种很常见的设计模式 本文先说明静态代理
上图是很常见的代理模式UML图

在这个设计模式中用户不会与真正被代理的对象接触,只会与代理类接触就是上图中的Proxy类。在这个设计模式中代理对象还可以增强一些功能。
举个例子,我们在电影院看电影,可以理解为电影院就是那个代理类,而电影是电影公司委托给电影院播放的。电影院会在电影开始之前放广告,卖一些爆米花之类的来产生收益。我们用代码来模拟一下:

首先先是需要有一个能够被代理的接口来实现我们需要的播放电影

interface Movie {
    void play();
}

然后是实现真正播放电影的类来实现Movie接口

class RealMovie implements Movie {

    @Override
    public void play() {
        System.out.println("您正在观看电影");
    }
}

然后创建一个代理类来代理真正放电影的类 他也有play()方法,但是他在调用这个方法是会做一些功能的增强。

class Cinema implements Movie {

    RealMovie movie;

    public Cinema(RealMovie movie) {
        this.movie = movie;
    }

    @Override
    public void play() {
        System.out.println("电影要开始了,买买买!!!");
        movie.play();
        System.out.println("电影要结束了,收拾一下!!!");
    }
}

然后我们来编写我们的客户端类来测试这个功能,我们在客户端里调用了代理类的play()方法

public class daili {
    public static void main(String[] args) {
        Movie movie = new RealMovie();
        Movie xianziamovie = new Cinema((RealMovie) movie);
        xianziamovie.play();
    }
}

得到结果
在这里插入图片描述

通过上文可以看到代理模式应该是不修改代理对象的前提下可以增强功能,且不会让用户直接调用被代理对象。值得注意的是代理类和被代理类都应该实现同一个接口或者继承同一个父类。

本文参考来自:https://www.cnblogs.com/cC-Zhou/p/9525638.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值