`
Supanccy2013
  • 浏览: 223511 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 设计模式之代理模式---静态代理

 
阅读更多
代理模式的特点:
1,代理类与委托类必须实现同一个接口(这样调用代理的方法x时,代理才能调用委托类的方法x          实现代理)。
2,代理类持有委托类的一个实例引用
3,代理类对象本身并不真正实现服务,真正的服务是由委托类来实现的。
4,代理类主要负责为委托类预处理信息,过滤消息,把消息转发给委托类实例
5,按照代理的创建时期,代理类可以分为两种。
   静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类 的.class文件就已经存在了。
   动态代理:在程序运行时,运用反射机制动态创建而成。

静态代理实例:
1,代理类,委托类都必须实现的接口
package com.supan.designPattern;
//实际类和代理类都需要实现这个接口
public interface Count {
   //查看账户方法
	public void queryCount();
	//修改账户
	public void updateCount();
}

2,委托类(也就是实际的类,真正的处理事物就是这个类的实例实现的)
package com.supan.designPattern;
//这个是实际的类,也就是委托类(包含业务逻辑)
public class CountImpl implements Count {
	public void queryCount() {
		System.out.println("查看账户");
	}
	public void updateCount() {
		System.out.println("修改账户");
	}
}

3,代理类(也可以说是增强的委托类)
package com.supan.designPattern;
//这个是代理类(增强的CountImpl类),该类中必须持有实际类实例的引用
//所有调用实际类实例的方法都必须是这个引用的调用
public class CountProxy implements Count {
	private CountImpl countImpl;
	public CountProxy(CountImpl countImpl){
		this.countImpl = countImpl;
	}
	@Override
	public void queryCount() {
      System.out.println("这个是查看账户方法调用之前处理的事物");
      countImpl.queryCount();
      System.out.println("这个是查看账户方法调用之后处理的事物");
	}
	@Override
	public void updateCount() {
		System.out.println("这个是更新账户方法调用之前处理的事物");
		countImpl.updateCount();
		System.out.println("这个是更新账户方法调用之后处理的事物");
	}
}

4,测试类
package com.supan.designPattern;
//静态代理的测试类
public class TestCount {
	public static void main(String[] args) {
       CountImpl ci = new CountImpl();
       CountProxy cp = new CountProxy(ci);
       cp.queryCount();
       cp.updateCount();
	}
}

5,打印结果是:
这个是查看账户方法调用之前处理的事物
查看账户
这个是查看账户方法调用之后处理的事物
这个是更新账户方法调用之前处理的事物
修改账户
这个是更新账户方法调用之后处理的事物

分享到:
评论

相关推荐

    Java设计模式——代理设计模式(静态代理和动态代理)

    代理设计模式分为静态代理和动态代理两种类型。 ### 静态代理 静态代理是在编译时就已经确定了代理关系,代理类和真实类的关系是硬编码在代理类中的。下面我们将详细介绍静态代理的实现方式: 1. **定义接口**:...

    Java设计模式-代理模式例子

    在这个“Java设计模式-代理模式例子”中,我们可能能看到如何创建静态代理类,以及如何利用`Proxy`和`InvocationHandler`创建动态代理。源码分析可以帮助我们更好地理解代理模式的实现细节,并能将其运用到自己的...

    java静态代理、动态代理、装饰设计模式

    在Java编程中,代理模式是一种常见的设计模式,它允许我们为一个对象提供一个代理以控制对这个对象的访问。代理模式通常用于增加额外的功能或在访问原对象时进行额外的操作,比如日志记录、安全控制、性能统计等。...

    Java 静态代理模式

    Java静态代理模式是一种设计模式,它允许我们为一个对象提供一个代理,以便增强或扩展其功能,同时不改变原有对象的代码。在Java中,静态代理是通过在代理类中显式实现目标接口来实现的。下面将详细介绍静态代理模式...

    JAVA设计模式之代理模式实例

    在Java编程领域,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于软件开发中以提高代码的可读性、可维护性和可扩展性。代理模式是设计模式的一种,它提供了一种对目标对象进行增强或者控制访问的方式。...

    java 设计模式 静态代理模式

    //代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...

    Java设计模式-代理模式

    总结来说,Java设计模式中的代理模式提供了一种优雅的方式来控制对目标对象的访问,并扩展其功能。动态代理更是使得这一过程更加灵活,降低了代码的维护成本。通过学习和应用代理模式,开发者可以更好地设计和实现...

    JAVA设计模式(代理模式)

    **Java设计模式——代理模式详解** 代理模式是软件设计模式中的一个重要组成部分,它在Java编程中扮演着举足轻重的角色。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...

    优秀的设计模式示例-静态代理模式

    随着Java等语言的发展,动态代理(如Java的`java.lang.reflect.Proxy`)和C#的`System.Reflection.Emit`等技术,可以更灵活地创建代理对象,克服了静态代理的部分局限性。 总之,静态代理模式提供了一种在不修改...

    java设计模式视频教程-代理模式.rar

    在这个“java设计模式视频教程-代理模式.rar”压缩包中,包含了一部关于代理模式的视频教程,以及相关的课件和示例代码。 代理模式的核心思想是通过代理类来代理原始对象,为原始对象提供一个替代品或占位符,以...

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

    Java设计模式是软件开发中的重要概念,它提供了一套通用的解决方案模板,使得代码更加可复用、可扩展。在这些模式中,代理模式(Proxy Pattern)是一种常用的结构型设计模式,它允许我们为一个对象创建一个代理,该...

    Java设计模式之代理模式

    Java设计模式之代理模式 1.代理模式 1.1 静态代理 1.2 动态代理 1.3.代理模式使用原因和应用方面

    JAVA设计模式例程-代理模式

    在这个"JAVA设计模式例程-代理模式"的压缩包中,我们可以深入学习如何在Java中实现这一模式。 1. **代理模式的基本概念** 代理模式的核心思想是为一个目标对象创建一个代理对象,代理对象在客户端和目标对象之间起...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    代理模式之静态代理---数据库连接池对象实现原理

    在本主题“代理模式之静态代理---数据库连接池对象实现原理”中,我们将探讨如何使用静态代理来实现数据库连接池。数据库连接池是现代应用中常用的优化手段,它可以高效地管理数据库连接,避免频繁地创建和关闭连接...

    java常用设计模式-代理模式

    Java 设计模式 - 代理模式 代理模式(Proxy Pattern)是一种常用的设计模式,提供了间接访问目标对象的一种方式,即通过代理对象访问目标对象。这样做的好处是,可以在不改变原有目标对象的基础上,对目标对象增加...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...

    java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar

    java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法调用 * ...

    设计模式之代理模式demo

    代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用。代理模式的主要目的是为其他对象提供一种代理以控制对这个对象的访问。通过引入代理,我们可以增加新的功能,如缓存、日志记录、访问控制等...

Global site tag (gtag.js) - Google Analytics