`

理_代_态_动

 
阅读更多
/**
* 抽象角色
*/
public interface IHello
{
    void sayHello(String name);
}

/**
* 真实角色
*/
public class Hello implements IHello
{
    @Override
    public void sayHello(String name)
    {
        System.out.println("真实角色的方法 " + name); //$NON-NLS-1$
    }
}

/**
* 代理类 --- 动态代理
*/
public class ProxyHello implements InvocationHandler
{
    Object obj;
   
    /**
     * 构造函数
     * @param obj
     */
    public ProxyHello(Object obj)
    {
        this.obj = obj;
    }
   
    @Override
    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable
    {
        System.out.println("在代理方法执行之前"); //$NON-NLS-1$
       
        method.invoke(obj, args);
       
        System.out.println("在代理方法执行之后"); //$NON-NLS-1$
       
        return null;
    }
   
    public static void main(String[] args)
    {
        Hello hello = new Hello();
        ProxyHello pHello = new ProxyHello(hello);
        Class hClass = hello.getClass();
       
        IHello h = (IHello)Proxy.newProxyInstance(hClass.getClassLoader(),
                hClass.getInterfaces(),
                pHello);
        h.sayHello("化为");
    }
}

-----------------------------
/**
* 抽象角色
*/
public interface IHolle
{
    public void sayHello(String name);
}

/**
* 代理类
*/
public class Hello implements IHolle
{
    @Override
    public void sayHello(String name)
    {
        System.out.println("实现类的方法 " + name); //$NON-NLS-1$
    }
}

/**
* 代理类 --- 静态代理
*/
public class ProxyHello implements IHolle
{
    Hello hello;
   
    public ProxyHello(Hello hello)
    {
        this.hello = hello;
    }
   
    @Override
    public void sayHello(String name)
    {
        proRequest();
       
        hello.sayHello(name);
       
        proResponse();
    }
   
    public void proRequest()
    {
        System.out.println("代理之前的处理"); //$NON-NLS-1$
    }
   
    public void proResponse()
    {
        System.out.println("代理之后的处理"); //$NON-NLS-1$
    }
   
    public static void main(String[] args)
    {
        ProxyHello ProxyHello = new ProxyHello(new Hello());
        ProxyHello.sayHello("huawei"); //$NON-NLS-1$
    }
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java基础入门教程

    3 Java 语 言 的 动 画 效 果 远 比 GUI技 术 更 加 逼 真 ,尤 其 是 利用WW W提 供 的 巨 大动 画 资 源 空 间 ,可 以 共 享 全 世 界 的 动 态 画面 的 资 源 。 4 软 件 最 终 产 品 :用 Java 语 言 开 发 的 ...

    新版Android开发教程.rar

    ANDROID 的推出后可能影响的产业包括移动电信业,软件开发业,手机制造业,在以消费者为核心的状 态 。 对消费者的影响 � 高档手机选择面增加。 � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从...

    数字化转型专题生产数字化篇.docx

    汽 车 企 业 数 字 化 转 型 的 过 程 中 , 不 仅 需 要 技 术 的 支 持 , 更 需 要 深 入 理 解 产 业 动 态 和 市 场 需 求 。 专 家 咨 询 团 队 的 规 划 咨 询 服 务 可 以 帮 助 企 业 制 定 合 理 的 数 字...

    一些校园网的方案实例

    通 过校 园 网 络使 教 师和 科 研 人 员能 及 时 了 解国 内外 科 技 发 展动 态 , 加 强 对外 技 术 合 作。了 解 国内 外 教 学和 科 研 水 平 。为 开 展 网上 远 距 离 教学 和 校 内 多 媒体 交 互 式 教 学 ...

    简单实用的工具-影响地图

    作 为 一 个 简 单 实 用 的 工 ... 并 根 据 验 证 的 结 果 动 态 调 整 影 响 地 图 和 基 于 它 的 里 程 碑 规 划, 而 这 也 正 是 当 下 流 行 的" 精 益 创 业" 的 核 心 思 想 之 一—— 经 验 证 的 学 习。

    rustprimer-v1.13-大家新年快乐.pdf

    代 器迭代 器 、 适 配 器 、 消 费 者 模 块 和 包 系 统 、 P r e lu d e 模 块 m o d u le 和 包 c r a t e P r e lu d e O p t io n 、 R e s u lt 与 错 误 处 理 输 入 与 输 出 宏 系 统 堆 、 栈 与 Bo x 几...

    unity3d手机游戏开发1,2,3,4,8,10章

    3ds Max挣 态摸型导 由 3山 Max动 画模型导 出 3ds Max动 画导 出 Maya椟 型导 出 θ 9 l 5 5 优 化 小结 ………………………………………………………………………………………… 163 第 C= 与 Web服 努器的交互 …...

    word.txt 常见的3756个汉字

    ### 常见的3756个汉字分析 #### 概述 本文旨在通过分析一个包含大约3756个常见汉字的数据集,探讨这些汉字在神经网络训练中的应用价值及其对自然语言处理(NLP)技术的重要性。数据集中包含了从日常生活中广泛使用...

Global site tag (gtag.js) - Google Analytics