`
hongsoft
  • 浏览: 302421 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Proxy模式之春节回家

阅读更多
?

?? Proxy模式之春节回家<!----><o:p></o:p>

1.?? 引言

昨天晚上,老妈打电话过来,问我买到火车票没有,什么时候能回家,言语中非常着急,这让我想起了往事我去年在成都,回家是非常方便的,包括春节。因为在成都,火车票非常好买。老妈从不用担心我回家买不到车票,在她眼中,我买票相当于下面的类:<o:p></o:p>

Package com.hongsoft.test;<o:p></o:p>

Abstract public class GoHome<o:p></o:p>

{<o:p></o:p>

?? abstract public boolean buyTicket();<o:p></o:p>

}<o:p></o:p>

老妈眼中, buyTicket()方法总是返回true的,所以春节期间她从不过问我买票的事;我实际是怎么买到的票呢?<o:p></o:p>

2.?? 平常买票的办法

我在成都买票都是自己去买的,如下:<o:p></o:p>

package com.hongsoft.test;<o:p></o:p>

public class RealGoHome extends GoHome<o:p></o:p>

{<o:p></o:p>

??? public boolean buyTicket()<o:p></o:p>

??? {<o:p></o:p>

??????? System.out.println(“掏钱,买票”);<o:p></o:p>

??? }<o:p></o:p>

}<o:p></o:p>

正如老妈所想的那样, buyTicket()方法总是返回true的,所以我总能很顺利的买到票回家;但今年春节,不行了。<o:p></o:p>

3.?? 今年买票的办法

我今年到了广州,广州春节的票可真难买!我调用我的buyTicket()方法好多遍了,可每次都返回false,没票!怎么办呢?不回去可不行啊,无奈中,我想到了火车票代理处。<o:p></o:p>

我知道春节期间代理处是这么买票的:<o:p></o:p>

package com.hongsoft.test;<o:p></o:p>

public class ProxyGoHome extends GoHome<o:p></o:p>

{<o:p></o:p>

??? private RealGoHome realGoHome;<o:p></o:p>

??? //实现买票方法<o:p></o:p>

??? public boolean buyTicket()<o:p></o:p>

??? {<o:p></o:p>

?????? preBuy();<o:p></o:p>

?????? if(realGoHome==null)<o:p></o:p>

?????????? realGoHome=new RealGoHome();<o:p></o:p>

?????? realGoHome. buyTicket();<o:p></o:p>

?????? postBuy();?????? <o:p></o:p>

??? }<o:p></o:p>

??? //买票前的动作<o:p></o:p>

??? private void preBuy()<o:p></o:p>

??? {<o:p></o:p>

?????? System.out.println(“打电话给关系人,让关系人给售票点打声招呼”);<o:p></o:p>

??? }<o:p></o:p>

??? //买票后的动作<o:p></o:p>

??? private void postBuy()<o:p></o:p>

??? {<o:p></o:p>

?????? System.out.println(“请关系人Mixi Mixi”);<o:p></o:p>

??? }<o:p></o:p>

}<o:p></o:p>

4.?? 总结

就这样,通过火车票代理处,我今天顺利地拿到了票!经验总结如下:

1)????? 我通过火车票代理处买票的方式如下:

GoHome goHome=new ProxyGoHome();

GoHome.buyTicket();

但我声明:代码只用来学习Proxy模式,不能编译运行!

2)???? 以上就是Proxy模式的应用,GoHome是抽象主体,RealGoHome是真实主体,ProxyGoHome是代理主体<o:p></o:p>

3)???? 应该在合适的地方应用该模式:<o:p></o:p>

如果平常买票也用Proxy模式,不一定好,因为要花我的代理费啊!<o:p></o:p>

但到了广州的春节你还不用Proxy模式,………,呵呵,除非你不准备春节回家!<o:p></o:p>

4)???? 本例中ProxyGoHome有preBuy()和postBuy()方法,在本例中,没有他们,则买不到票;在实际的编程环境中,预处理和后处理方法一般用来实现特定的功能:如管理数据库连接,管理网络连接,实现访问控制,实现Cache,EJB客户端预处理等等。因为一个代理类为很多的客户服务,所以,我们一般在预处理和后处理方法中实现从代理中抽象出来的功能

5) 要注意的是,Proxy是为客户服务的,如本例,代理处是为我服务的;火车站不需要Proxy为火车站服务,这是Proxy模式与Facade模式的最本质的区别,以后的文章将会详细分析这一点

<o:p></o:p>?

好了,就写到这里,我要给老妈打电话,让她放心了!

?

hongbo781202,又名HongSoft,职业程序员,研究领域:1)基于工作流的BPM系统研究2)基于JAVA的信息安全

技术.欢迎和大家讨论JAVA相关各方面技术和市场问题 hongbosoftware@163.com<o:p></o:p>

?????

分享到:
评论

相关推荐

    Proxy 模式学习代码

    Proxy模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。这种模式在软件工程中广泛应用,主要用于控制对真实对象的访问,提供额外的功能,如日志、...

    设计模式C++学习之代理模式(Proxy)

    代理模式是一种设计模式,它是结构型模式之一,主要用于在客户端和目标对象之间建立一个代理对象,以便控制对目标对象的访问。在C++中,代理模式可以用来为其他对象提供一种代理以控制对这个对象的访问,或者增加...

    设计模式之代理模式proxy.zip

    JDK动态代理基于接口实现,它要求目标对象必须实现至少一个接口,然后通过Proxy类和InvocationHandler接口来创建并控制代理对象。当我们调用代理对象的方法时,实际执行的是InvocationHandler的invoke方法,这样可以...

    简单工厂模式,工厂方法模式,抽象工厂模式和Proxy模式

    到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下Proxy模式。

    C++ Proxy模式

    Proxy模式是软件设计模式中的一个关键元素,属于结构型模式的一种。在C++中,Proxy模式主要用于为其他对象提供一种代理以控制对这个对象的访问。这种模式的核心思想是通过创建一个代理对象来充当目标对象的中介,...

    Proxy模式

    Proxy模式是一种设计模式,它在软件工程中扮演着重要的角色,允许我们为其他对象提供一个替代接口,从而控制对原对象的访问。这种模式的主要目的是为了增加灵活性、添加额外功能或者在访问对象时提供安全控制。在...

    设计模式之代理模式proxy

    **设计模式之代理模式(Proxy Pattern)** 设计模式是软件工程中的一种最佳实践,它是在特定情境下解决常见问题的模板。代理模式是其中一种行为设计模式,它的核心思想是为一个对象提供一个替身或者代理,以控制对...

    从房屋买卖看 java proxy 模式

    标题中的“从房屋买卖看 java proxy 模式”暗示了我们将通过一个具体的场景来探讨 Java 中的代理(Proxy)模式。在软件设计中,代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在...

    c++-设计模式之代理模式(Proxy)

    代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于保护、延迟加载、记录请求等场景,可以在不改变原有对象的情况下为其增加新的功能。 代理...

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式)

    - **《设计模式:可复用面向对象软件的基础》GoF**:这本书是设计模式领域的经典之作,详细介绍了包括代理模式在内的多种设计模式。 - **《面向对象分析与设计》Grady Booch**:该书深入讲解了面向对象的设计原则和...

    proxy.jsp、proxy.ashx、proxy.php、proxy.config

    配置时同样需要将`proxy.ashx`部署到服务器,并在ArcGIS JavaScript API中设置`proxyUrl`属性。 **proxy.php** 是PHP语言实现的代理服务,适用于PHP环境,如Apache或Nginx。对于那些基于PHP的Web应用,可以使用`...

    Proxy 代理模式

    Proxy代理模式是设计模式中的一种,它在Java中扮演着重要的角色,特别是在处理远程调用、安全性、缓存以及日志记录等方面。代理模式的基本思想是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。在这...

    基于Proxy模式的分布式MySQL数据库中间件设计源码

    MySQL数据库中间件:基于C语言开发,包含59个文件,包括22个C源文件...该项目是一个分布式MySQL数据库中间件,采用Proxy模式设计,基于核心业务对象切分,旨在提供高效的数据库查询和处理能力,适用于分布式系统环境。

    Proxy代理模式经典实例(绝对OOP)

    Proxy代理模式是面向对象设计模式中的重要组成部分,它在软件工程中扮演着关键角色,尤其在Java编程中。代理模式的主要目的是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。这种设计模式允许我们...

    ABAP 调用ABAP PROXY

    - 使用批处理调用:对于大量数据传输,可以考虑使用批处理模式减少网络传输次数。 - 缓存管理:合理使用缓存策略,减少不必要的服务调用。 - 错误重试机制:针对可能的网络问题,设计适当的错误重试逻辑。 ### 安全...

    Nginx之proxy_redirect使用详解

    其中,“default”模式下,Nginx会自动根据location和proxy_pass指令中的参数设置,来决定Location重定向的目标地址。而当设置为“off”时,则不进行重定向的修改。最后一种模式“redirect replacement”需要手动...

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) (Level 300)

    在IT领域,面向对象设计模式是软件开发中的重要概念,它们是解决常见设计问题的可重用解决方案。本文将深入探讨C#中的一个关键设计模式——代理模式,它属于结构型模式的一种,适用于管理和控制对象的访问。我们将从...

    java 设计模式之代理模式(Proxy Pattern)实现代码及设计详解:动态代理模式、静态代理模式

    Java设计模式是软件开发中的重要概念,它提供了一套通用的解决方案模板,使得代码更加可复用、可扩展。在这些模式中,代理模式(Proxy Pattern)是...对于Java开发者来说,掌握设计模式是提升专业技能的关键步骤之一。

    proxy.rar java三种代理模式源码

    这个"proxy.rar"压缩包中包含了这三种代理模式的源代码示例,以及对泛型的应用。 1. 静态代理: 静态代理是最基础的代理形式,它通过创建一个代理类来实现目标接口,并在代理类中调用目标对象的方法。这种方式需要...

Global site tag (gtag.js) - Google Analytics