java设计模式详解:代理模式

  代理模式就是用一个第三者的身份去完成工作,其实际意义跟字面意思其实是一样的,理解方式有很多,还是例子直观.

  本例的实现类是实现买票功能,实际应用想要添加身份验证功能,利用代理模式添加验证步骤.上例子:

package com.learn.proxy.proxyModel;

/**
 * 初始功能接口,买票
 * @author garfield
 *
 */
public interface Tickets {
    public abstract void buy();
}
package com.learn.proxy.proxyModel;

/**
 * 真实实现购买票代码
 * @author garfield
 *
 */
public class RealBuy implements Tickets{

    @Override
    public void buy() {
        System.out.println("pay money");

    }

}
package com.learn.proxy.proxyModel;

/**
 * 代理购买,由于需要在买票之前进行身份验证,所以增加代理功能
 * @author garfield
 *
 */
public class ProxyBuy implements Tickets{

    private Tickets tickets;

    ProxyBuy(Tickets tickets) {
        // TODO Auto-generated constructor stub
        this.tickets = tickets;
    }

    @Override
    public void buy() {
        getAuthority();
        this.tickets.buy();
    }

    public void getAuthority(){
        System.out.println("get authority");
    }

}
package com.learn.proxy.proxyModel;

/**
 * 运行进行购买
 * @author garfield
 *
 */
public class BuyTickets {
    public static void main(String[] args) {
        new ProxyBuy(new RealBuy()).buy();
    }

}

  运行结果:

get authority
pay money

  done

时间: 2024-10-11 16:00:39

java设计模式详解:代理模式的相关文章

java设计模式详解(转)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

Java设计模式—Proxy动态代理模式

代理:设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 图 1. 代理模式 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别.通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性.Java 动态代理机制以巧妙的方式近乎完

java设计模式详解

设计模式: 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. 狭义的设计模式是指GoF在<设计模式:可复用面向对象软件的基础>一书中所介绍的23种经典设计模式,不过设计模式并不仅仅只有这23种,随着软件开发技术的发展,越来越多的新模式不断诞生并得以应用. 设计模式可分为:创建型(Creational):创建型模式主要用于描述如何创建对象 结构型(Structura

Java设计模式9:代理模式

代理模式 代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结构 有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间起到中介作用.代理模式中的角色有: 1.抽象对象角色 声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象 2.目标对象角色 定义了代理对象所代表的目标对象 3.代理对象角色 代理对象内部含有目标对象的引用,从而可以在任何时候操作目标对象:代理对象提供一个与目标

Java 设计模式(八) Proxy(代理)模式及Spring引申

Proxy 基本概念 代理模式(Proxy pattern)是一种使用率非常高的模式: 为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫作委托模式,它是一项基本设计技巧 Proxy中的角色 Subject(抽象主题类):既可以是抽象类也可以是抽象的接口 RealSubject(具体的主题角色):是被委托角色或者说是被代理角色 Proxy(代理主题角色):是委托类或者代理类: 它负责对真实的角色的应用 把Subject定义的方法限制委托给RealSubject实现 在RealSubjec

《Java设计模式》之代理模式

1,什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 2,策略模式有什么好处? 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 3,代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口: 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象.同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当

Java设计模式之《代理模式》及应用场景

代理模式算是我接触较早的模式,代理就是中介,中间人.法律上也有代理,比如代理律师之类,委托人将自己的一部分权限委托给代理者,代理者就拥有被代理者(委托人)的部分权限,并且可以以被代理人的名义来实行这些权限,此时代理者与委托人等同,当然代理人也可以在实行权限时配合自己的能力来进行,当然不能超出这个权限. Java中的代理模式类似于上面的代理,我们也是为一个类(委托类)创建一个代理类,来代表它来对外提供功能. 如何在Java中创建一个类的代理类呢? 很简单,我们需要创建一个公共接口,委托类要实现这个

详解代理模式:女朋友这么漂亮,你缺经纪人吗?

一 摘要 晚上看了关于代理模式的一篇文章,写的非常生动,来过来分享给大家.这里我就PHP代理模式给大家进行详细说明.下面我们来看一看 这几天王宝强妻子出轨经纪人事件惹尽了眼球,"你缺经纪人吗" 一下子成为打招呼必备热词.在紧跟"潮流"之前我们有必要了解下,经纪人都负责为宝强做哪些事呢? 1. 为宝强安排档期 2. 为宝强做公关 3. 为宝强照顾老婆 从上面可以发现,宝强几乎被架空了,陷入了一场圈套之中啦.这里还是借用别人画的一个图. 下面我们来看一下用UML类图具体

Java设计模式之享元模式实例详解

本文实例讲述了Java设计模式之享元模式.分享给大家供大家参考,具体如下: 解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象.比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象.如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了.那么如果要是每个字母都共享一个对象,那么就大大节约了资源. 在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweigh