`

JDP-[代理模式]-一个例子

 
阅读更多

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
public interface Service 
{
    public void offerService();
}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
public class PrintService implements Service
{
	@Override
	public void offerService()
    {
    	System.out.println("Printing now!");
    }
}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
public class ScanService implements Service 
{
	@Override
	public void offerService() 
	{
		System.out.println("Scaning now!");
	}
}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
public class StaticProxy implements Service 
{
    Service service;
    public StaticProxy(Service service)
    {
    	this.service = service;
    }
    public void setServiceProxy(Service service)
    {
    	this.service = service;
    }
	@Override
	public void offerService() 
	{
	    this.beforeCall();
		this.service.offerService();
		this.afterCall();
	}
	public void beforeCall()
	{
		System.out.println("--BeforeCall--");
	}
	public void afterCall()
	{
		System.out.println("--AfterCall--");
	}
}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
public class StaticClient 
{
    public static void main(String[] args) 
    {
	    Service servicePrint = new PrintService();	
	    Service scanPrint = new ScanService();
	    StaticProxy serviceProxy = new StaticProxy(servicePrint);
	    serviceProxy.offerService();
	    serviceProxy.setServiceProxy(scanPrint);
	    serviceProxy.offerService();
	}
}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class DynamicProxy implements InvocationHandler 
{
    private Object object;
    public DynamicProxy (Object object)
    {
    	super();
    	this.object = object;
    }
	@Override
	public Object invoke(Object obj, Method method, Object[] args) throws Throwable 
	{
        this.beforeCall();
        method.invoke(object, args);
        this.afterCall();
        return null;
	}
	public void beforeCall()
	{
		System.out.println("--BeforeCall--");
	}
	public void afterCall()
	{
		System.out.println("--AfterCall--");
	}

}

 

 

/*
 * @author junin
 * @date   2102-11-21
 * @email  junife@163.com
 */
package Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class DynamicClient
{
    public static void main(String[] args) 
    {
    	DynamicProxy dynamicProxy = new DynamicProxy(new PrintService());
    	Service service  = (Service)Proxy.newProxyInstance(Service.class.getClassLoader(), new Class[]{Service.class}, dynamicProxy);
	    service.offerService();
	    
	    dynamicProxy = new DynamicProxy(new ScanService());
    	service  = (Service)Proxy.newProxyInstance(Service.class.getClassLoader(), new Class[]{Service.class}, dynamicProxy);
	    service.offerService();
    }
}
分享到:
评论

相关推荐

    明华汉澳DP-R123-U-SB2(X3-HZ) RD及DP串口系列读写器演示程序及开发包.zip

    适用于RD-EB、RD-ET、RD-EZ、RD-EB-MX、RD-ET-MX、RD-EZ-MX、KRD-EB、KRD-ET、KRD-EZ、KRD-EB-MX、KRD-ET-MX、KRD-EZ-MX 、SRD-R100、Q3-R100、Q3-R101、Q3-R102、DP-R103、DP-R 113、DP-R123、DP-R133、DP-R143、...

    DP-302打印服务器1.02版

    在家庭或是在办公场所分享您的打印机和的打印功能,DP-302可通过网络上轻松共享多个设备,让您的办公网络成为一个整体。 强大的性能 D-Link DP-302设备配备了强大的CPU,内存和高速的USB 2.0端口,并且能够支持...

    DP-301U网络打印服务器驱动

    了解了DP-301U网络打印服务器驱动的基本知识和安装流程后,我们可以更有效地利用这个设备,实现网络打印的便捷性。在日常使用中,定期更新驱动程序以获取最新的功能和性能优化也是很重要的。同时,保持良好的网络...

    天际航图像快速建模系统DP-Modeler2.3

    《天际航图像快速建模系统DP-Modeler2.3》是一款专为3D建模和视觉效果设计的专业软件,结合了先进的图像处理技术和高效的工作流程,旨在为用户提供便捷、精准的三维模型构建能力。DP-Modeler是天际航公司的明星产品...

    D-Link DP-302 打印服务器驱动

    【D-Link DP-302 打印服务器驱动】是一款专为D-Link公司的DP-302打印服务器设计的驱动程序。该驱动程序在IT领域中扮演着至关重要的角色,因为它允许计算机与DP-302打印服务器之间进行有效的通信,确保打印机能够正确...

    dp-8016p-pk 32位驱动

    驱动程序是操作系统与硬件设备之间的一个桥梁,它负责解释并执行来自操作系统的指令,使得软件能够有效地控制硬件。对于松下DP-8016P/PK打印机,32位驱动是专为运行32位操作系统的计算机设计的,确保了打印机在这样...

    DP-DP-Koppler_Rel3_www.44dpdp.com_www.44dpdp.con_EC1-DEB-DPM_GSD

    标题"DP-DP-Koppler_Rel3_www.44dpdp.com_www.44dpdp.con_EC1-DEB-DPM_GSD"中提到的"DP-DP-Koppler"可能指的是一个特定的软件或系统开发项目,其中"DP"可能是项目代号或者代表“Data Processing”的缩写,而"Koppler...

    DP-301U_UTILITY_PSADMIN_1.00

    DP-301U是一个实用的解决方案,尤其适用于小型办公室或家庭办公环境,它通过USB接口连接打印机,支持多种类型的打印机,确保了广泛的兼容性。 描述中提到,这个驱动程序是由D-Link官方提供的,这确保了其可靠性和...

    DP-ModelerV2.3 用户手册

    ### DP-ModelerV2.3 用户手册知识点...综上所述,DP-ModelerV2.3不仅拥有强大的图像处理能力和高效的建模技术,还提供了一个用户友好的界面和丰富的功能集,使得即使是非专业人士也能够轻松地完成复杂的三维建模任务。

    DP-600微软MCP ET.pdf

    根据提供的文件信息,我们可以推断出这是一份与微软MCP认证相关的学习资料,主要针对的是DP-600考试。下面将详细解读文件中的关键信息,并基于这些信息提炼出有关MCP认证的重要知识点。 ### 标题:“DP-600微软MCP ...

    DP-301U 共享USB打印服务器配置

    **DP-301U**是一款由D-Link推出的紧凑型打印服务器,专为实现网络共享打印而设计。它通过高速USB端口连接USB打印机,使得局域网内的任何计算机都能方便地访问该打印机。 - **特点**: - 紧凑型设计,节省空间; -...

    DP-504 DP-508步进驱动器用户手册.pdf

    DP-504/DP-508步进驱动器是一类细分型步进驱动器,适用于各种中小型自动化设备和仪器。这些驱动器的特点包括: - 输入电压为40/80VDC,输出电流有效值为5.0A。 - 可以驱动5.0A以下各种二相混合式步进电机。 - 采用纯...

    D-link DP-302打印服务器software

    1. **设备管理**: 软件提供了一个用户友好的界面,允许用户查看和管理打印服务器的状态,包括IP地址、子网掩码、默认网关等网络参数。 2. **配置设置**: 用户可以通过软件配置打印服务器的各项设置,如打印机端口...

    DP-851绝版资料

    这表明DP-851不仅仅是一个独立的单板计算机,它还能够与PC协同工作,实现数据的远程监控和采集。这种通信功能在当时是非常先进的技术,它不仅能够提升生产效率,也为故障诊断和远程控制提供了可能。这个特性在现今的...

    D-Link DP-302 V1.03 打印服务器固件

    D-Link DP-302 打印服务器固件,最新V1.03版本。也是最终版本,支持更多打印机。

    DP-means k - means聚类算法的比较

    而DP-means的实现可能需要额外的库,如`dpmeans`,这是一个专门为DP-means算法编写的Python包。在给定的项目"Python-DP-Means-Clustering-master"中,很可能包含了这两个算法的代码实现,包括数据预处理、模型训练和...

    DP-100文档.pdf

    DP-100文档是Microsoft Azure认证考试中的一个重要组件,旨在考察考生的数据科学解决方案设计和实现能力。本文档涵盖了DP-100考试的部分内容,涉及到数据科学解决方案的设计、实现和部署等方面。 从题目中,我们...

    libsvm-dp-master

    【libsvm-dp-master】是一个基于著名的开源库【libsvm】的扩展版本,它引入了动态规划(DP)算法,以适应更广泛的机器学习任务,尤其是那些需要神经网络集成的场景。libsvm-dp-master的核心目标是提升模型的性能和...

    DP-301U_v2.36 固件

    总结来说,DP-301U_v2.36固件是DP-301U系列打印机服务器的最后一个官方更新,它集成了多项优化和改进,旨在提供最佳的打印服务体验。对于拥有DP-301U设备的用户来说,安装这个固件更新是确保设备持续可靠运行的重要...

Global site tag (gtag.js) - Google Analytics