定义
代理模式,有代替打理的意思。在某些情况下,当客户端不能或不适合直接访问目标业务对象时,业务对象可以通过把自己的业务托管给代理对象,使客户端间接地通过代理进行业务访问。这样不但能方便客户端访问,并且也达到了客户端对目标对象的访问的控制
在日常生活中,火车出行是一种非常便利的出行方式,火车站会出售火车票,我们可以通过火车站售票处进行购票,但是有些地方,火车站处于偏远的位置,如果必须去火车站购票,就相对比较麻烦,因此火车站在各个地方都设有火车票代售点,这样我们就可以选择去附近的代售点进行购票,节约了我们的时间。但是,通常代售点会收取一定的手续费。这跟我们要讲到的代理模式,有异曲同工之妙。
代码实现
火车站接口,可以销售火车票
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();
}
}
乍一看,代理模式和装饰器模式是不是很像。但是呢,两者的侧重点不太一样,装饰器模式,侧重于对目标对象功能的增强,代理模式侧重于对目标对象访问的控制。
以上就是所有内容,我将持续更新设计模式。欢迎大家一起交流学习😜