`

代理模式(静态)

阅读更多
package com.jelly.proxy;
/**
 * 代理模式接口
 * @author Jelly QQ136179492
 *
 */
public abstract class Subject {
	public abstract void request();
}

package com.jelly.proxy;
/**
 * 代理模式,真实类 
 * @author Jelly QQ136179492
 *
 */
public class RealSubject extends Subject {

	public void request() {
		System.out.println("Form Real Subject");
	}

}

package com.jelly.proxy;
/**
 * 代理类
 * @author Jelly
 *
 */
public class ProxySubject extends Subject {
	
	private RealSubject realSubject; //代理角色内部引用了真实角色
	
	public void request() {
		preRequest();
		if(realSubject ==null)
			realSubject = new RealSubject();
		realSubject.request(); //真实角色所完成的事情 
		postRequest();
	}
	private void preRequest(){
		System.out.println("pre request");
	}
	private void postRequest(){
		System.out.println("post request");
	}
}

package com.jelly.proxy;

/**
 * 代理模式测试
 * @author Jelly QQ136179492
 *
 */
public class Test {

	public static void main(String[] args) {
		Subject subject = new ProxySubject();
		subject.request();
	}

}

如果按照上述的方法使用代理模式,那么真实角色必须事先已经存在,并将其作为代理对象的内部属性。但在实际使用时一个真实角色必须对应一个代理角色,如果大量使用会导致类的隐剧膨胀。此外如果实现并不知道真实角色,该如何使用代理呢这个问题可以通过JAVA的动态代理类来解决
分享到:
评论

相关推荐

    Java 代理 代理模式 静态代理与动态代理 常见的动态代理实现 .md

    代理模式可以进一步细分为静态代理和动态代理。 - **静态代理**:在程序编译时就已经确定代理类的具体实现方式。这意味着每次需要代理不同的操作时,都需要修改代理类的代码,这违反了软件工程中的开闭原则。 - **...

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

    在这个例子中,"优秀的设计模式示例-静态代理模式"提供了实际项目中的代码实例,旨在帮助开发者更好地理解和应用静态代理模式。 静态代理模式的核心思想是通过代理类来代理原始对象(也称为真实对象或服务对象),...

    Java 静态代理模式

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

    代理模式_静态代理.zip

    设计模式之代理模式_静态代理的一个java实现的demo。主类在Client中。仅代码实现,可供初学者参考使用

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

    在Java编程中,设计模式是一种解决常见问题的模板或最佳实践,它可以帮助开发者编写更加灵活、可维护和可扩展的代码。代理设计模式是其中的一种,它的主要作用是在...在实际开发中,应根据项目需求选择合适的代理模式。

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

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

    设计模式(八)之静态代理模式.zip

    静态代理模式是设计模式中的一种,它属于结构型模式,主要用来在不修改原有对象的基础上,通过一个代理对象来增强或扩展原对象的功能。在本篇文章中,我们将深入探讨静态代理模式的概念、工作原理以及其优缺点。 ##...

    代理模式的各种实现 (动态代理、静态代理)

    代理模式在Java中主要有两种实现方式:静态代理和动态代理,其中动态代理又分为JDK动态代理和CGlib代理。 1. 静态代理 静态代理是程序员手动创建代理类并实现与目标类相同接口的方式。在静态代理中,代理类和目标类...

    java 设计模式 静态代理模式

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

    Java静态代理和动态代理

    Java的代理模式通过代理类提供了对委托类的扩展和控制,静态代理适合对已有代码不做修改的情况,而动态代理则提供了更高的灵活性和扩展性。在实际应用中,应根据项目需求和性能考虑选择静态代理或动态代理。对于需要...

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

    代理模式分为两种主要类型:静态代理和动态代理。 **静态代理** 在静态代理中,代理类和目标类都是在编译时就已经确定的。我们首先创建一个目标类接口,然后创建一个实现这个接口的代理类,同时代理类还持有目标类...

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理) Java 动态代理是 Java 编程语言中的一种强大工具,广泛应用于 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、Java 注解...

    代理模式(静态)

    静态代理是代理模式的一种实现方式,它在编译时就已经确定了代理关系。 代理模式的核心在于,它提供了一个代理类,该类实现了与目标类相同的接口,这样客户端就可以通过代理类来间接调用目标类的方法。代理类通常会...

    Java代理模式模板代码,包含动态代理与静态代理

    以下是一个简单的静态代理模式模板代码示例: ```java // 目标接口 public interface Target { void doSomething(); } // 目标类 public class RealTarget implements Target { @Override public void ...

    spring的设计模式

    动态代理模式可以解决静态代理模式的缺点,可以代理多个目标对象,并且可以适应各种环境。 在 Spring 框架中,动态代理模式广泛应用于 AOP 中。使用动态代理模式,开发者可以在不修改目标对象的情况下,添加额外的...

    代理模式-静态动态代理-jdk动态代理-cglib动态代理

    在Java中,代理模式有多种实现方式,包括静态代理、JDK动态代理和CGLIB动态代理。 **静态代理** 静态代理是最早也是最基础的代理实现方式。在静态代理中,我们需要创建一个代理类,这个代理类与原始类(被代理类)...

    静态代理与动态代理Demo

    代理模式分为静态代理和动态代理两种主要形式,每种都有其特定的应用场景和优势。下面我们将深入探讨这两种代理模式,并通过一个“黄牛买票”的例子来具体说明。 首先,我们来看静态代理。静态代理是程序员在编译时...

    代理模式的使用示例程序

    代理模式的实现通常有两种方式:静态代理和动态代理。静态代理是在编译时就确定了代理关系,需要为每个原始对象创建一个对应的代理类。动态代理则是在运行时动态创建代理对象,这通常通过Java的反射API或C#的`System...

    静态代理和动态代理

    根据实现方式的不同,代理模式可以分为静态代理和动态代理两种。 ### 静态代理 静态代理是在编译时就已经确定了代理关系。我们需要创建一个代理类,该类实现与目标对象相同的接口,并在代理类的方法中调用目标对象...

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

    代理模式主要分为静态代理和动态代理两种类型。 1. 静态代理 在静态代理中,代理类和目标类是在编译时就已经确定的,它们通常具有相同的接口。客户端通过代理类调用方法,代理类再转发到目标类。以下是一个简单的...

Global site tag (gtag.js) - Google Analytics