代理模式(代购火车票)

编程入门 行业动态 更新时间:2024-10-08 03:31:30

代理模式(代购<a href=https://www.elefans.com/category/jswz/34/1767375.html style=火车票)"/>

代理模式(代购火车票)

       在实际的软件开发中,我们经常面临着对一个对象进行访问控制的问题,由于跨越网络或安全方面等原因不能直接或不需要直接被访问,直接访问的代价会给系统带来不必要的复杂性。

       如何在客户端程序与目标对象之间增加一层中间层,通过它来代替目标对象来完成客户程序对目标程序对象的各种操作要求,如此客户程序就可以透明的与目标对象进行交互?这是就需要用到代理模式。

      引入的对新对象来实现对真实对象的操作或者是将新的对象作为真实对象的一个替身,这种实现机制即为代理模式。

 

      通过票务中心买火车票,我们知道票务中心并不卖票,只有火车站才真正卖票,票务中心只是代理,票务中心卖的票其实是到火车站买的。

    在这个例子中,你就是客户,票务中心就是代理角色,火车站就是具体主体角色,卖票称为抽象主题角色。

抽象主题角色:

      1 public interface BuyTicket { 2 public void showTicket(); 3 }

 具体主题角色:

1 public class Train implements BuyTicket {
2 
3     @Override
4     public void showTicket() {
5     System.out.println("一张火车票");
6     }
7 
8 }

代理角色:

 1 public class TicketCenter implements BuyTicket {
 2    private BuyTicket ticket; //代理中心需要访问购票中心进行购票    并无出票的功能     也可以是火车站定义Train
 3     public TicketCenter(BuyTicket ticket) {
 4     this.ticket = ticket;//实例化,需要为自己所设的购票变量绑定实际的购票系统
 5 }
 6     @Override
 7     public void showTicket() {
 8       ticket.showTicket();//可以向用户显示的购到的票
 9     }
10     /*
11      * 在购票中心的购票功能上封装出属于代理系统的购票函数
12      */
13    public void buy(){
14     System.out.println("通过代理购得:");//表明构到票是通过代购系统
15     showTicket();//
16  }
17     
18 }

 

客户测试类:

1 public class ProxyPattern {
2 
3     public static void main(String[] args) {
4      BuyTicket x = new Train();//实例化一个购票系统
5      TicketCenter y = new TicketCenter(x); //y代理中心绑定着x购票系统
6      y.buy();//通过代理系统的购票函数购票
7     }
8 
9 }

 

转载于:.html

更多推荐

代理模式(代购火车票)

本文发布于:2024-02-07 07:33:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754656.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:火车票   模式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!