设计模式之代理模式

定义

代理模式,有代替打理的意思。在某些情况下,当客户端不能或不适合直接访问目标业务对象时,业务对象可以通过把自己的业务托管给代理对象,使客户端间接地通过代理进行业务访问。这样不但能方便客户端访问,并且也达到了客户端对目标对象的访问的控制

在日常生活中,火车出行是一种非常便利的出行方式,火车站会出售火车票,我们可以通过火车站售票处进行购票,但是有些地方,火车站处于偏远的位置,如果必须去火车站购票,就相对比较麻烦,因此火车站在各个地方都设有火车票代售点,这样我们就可以选择去附近的代售点进行购票,节约了我们的时间。但是,通常代售点会收取一定的手续费。这跟我们要讲到的代理模式,有异曲同工之妙。

代码实现

火车站接口,可以销售火车票

public interface TrainStation {
    void saleTicket();
}

火车站官方售票处,销售火车票,位置偏远

public class TicketOffice implements TrainStation{
    @Override
    public void saleTicket() {
        System.out.println("销售火车票");
    }
}

“代售点”,销售火车票,位置较近,但是收取一定的手续费

public class Agents implements TrainStation {

    private TicketOffice ticketOffice;

    public Agents() {
        this.ticketOffice = new TicketOffice();
    }

    @Override
    public void saleTicket() {
        System.out.println("收取手续费");
        ticketOffice.saleTicket();
    }
}

乍一看,代理模式和装饰器模式是不是很像。但是呢,两者的侧重点不太一样,装饰器模式,侧重于对目标对象功能的增强,代理模式侧重于对目标对象访问的控制。

以上就是所有内容,我将持续更新设计模式。欢迎大家一起交流学习😜

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值