`
yaoweinan
  • 浏览: 137543 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

代理模式例子

 
阅读更多

代理模式简单点就和现实中一样,只是代理实质性的还是别人在做。比如一个工厂招工,另外还有个人力资源部也在为该工厂招工,对外都是招工,表面不同,其实都是给这家工厂招人。

代理模式分为3部分:

1.代理抽象类(大多以一个接口出现,抽象表示代理提供的目标条件、用处)

2.代理类(提供代理目标给客户)

3.代理目标(实现代理抽象类的功能,被代理类使用)

 

举例如下:

情景:有家打字服务公司,当然干活的都是打字员,都能打字,打字员分两种:男和女打字员。由于公司觉得女同志打字比较辛苦,所以就让女同志只接活,最终交给男打字员操作,默认接来的活都交给Join,也可指定某个男打字员来操作,在客户看来是女打字员打字,其实是别人在干,她们只告诉别人我能给你们提供打字服务。这样女打字员就成了一个代理。

代码:

Typist

 

package j2se.proxy;

/**
 * 打字员
 * @author Lyon Yao
 *
 */
public interface Typist {
	/**
	 * 打字
	 */
	public void type();
}

 ManTypist

 

package j2se.proxy;

/**
 * 男打字员
 * @author Lyon Yao
 *
 */
public class ManTypist implements Typist {
	private String name;
	
	public ManTypist(String name) {
		this.name = name;
	}
	@Override
	public void type() {
		// TODO Auto-generated method stub
		System.out.println("I'm "+this.name+" and I'm typing");
	}

}

 WomanTypist

 

package j2se.proxy;

/**
 * 女打字员
 * @author Lyon Yao
 *
 */
public class WomanTypist implements Typist {

	private Typist typist=null;
	
	public WomanTypist(Typist typist) {
		super();
		this.typist = typist;
	}
	
	public WomanTypist() {
		super();
		this.typist=new ManTypist("Join");//default Join to do this work
		// TODO Auto-generated constructor stub
	}

	@Override
	public void type() {
		// TODO Auto-generated method stub
		typist.type();
	}

}

 测试

 

package j2se.proxy;

import org.junit.Test;

public class TestCase {

	@Test
	public void proxyTest(){
		WomanTypist typist=new WomanTypist();
		typist.type();
		Typist manTypist=new ManTypist("Tom");
		typist=new WomanTypist(manTypist);
		typist.type();
	}
}
分享到:
评论

相关推荐

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

    在这个“Java设计模式-代理模式例子”中,我们将深入探讨代理模式的概念、实现方式以及它在实际开发中的应用。 代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象控制对原对象的访问。在...

    Java代理模式例子

    Java代理模式 事例很生动,非常容易理解,推荐给大家。

    代理模式的示例代理模式的示例

    自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考

    Proxy代理模式经典实例(绝对OOP)

    Proxy代理模式是面向对象设计模式中的重要组成部分,它在软件工程中扮演着关键角色,尤其在Java编程中。代理模式的主要目的是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。这种设计模式允许我们...

    代理模式小例子

    这个"代理模式小例子"的代码可能展示了如何创建一个代理类来代表一个真实对象。代理类通常会实现与真实对象相同的方法,但在调用这些方法之前或之后,可以添加额外的操作。例如,代理可能在调用真实对象的方法前进行...

    设计模式的代理模式的例子

    代理模式是设计模式中的一种结构型模式,它在对象交互中起到了中介的作用,允许通过代理对象来间接调用目标对象,从而提供了额外的功能或者控制访问。这种模式的主要优点在于能够扩展对象的功能,同时又能保持原有...

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

    代理模式是设计模式的一种,它提供了一种对目标对象进行增强或者控制访问的方式。在本实例中,我们将深入探讨Java中的代理模式及其应用。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和...

    代理模式的使用示例程序

    代理模式是一种设计模式,它在软件工程中扮演着重要的角色,允许我们为其他对象提供一个替代接口,以控制对原始对象的访问。这种模式的主要目的是为了增加灵活性、安全性或者在不修改原有对象的情况下,增强或扩展其...

    代理模式应用小例子C#

    代理模式是一种设计模式,它在软件工程中扮演着重要的角色,允许我们为其他对象提供一个替代接口,以控制对原对象的访问。在C#中,代理模式的应用可以帮助我们实现如远程访问、权限控制、缓存、日志等功能。这份...

    java中的三种代理模式

    在Java编程中,代理模式是一种常用的面向对象设计模式,它允许我们为一个对象提供一个代理以控制...通过学习和实践这些例子,你可以深入理解这三种代理模式的实现细节和应用场景,从而更好地在实际项目中应用代理模式。

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    2. **代理模式**:代理模式也属于创建型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,代理类作为真实对象的代表,可以在客户端和目标对象之间起到中介作用,例如,可以添加额外的功能...

    C++ 代理模式实例

    代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的主要作用是,用来控制真实对象的访问权限,也就是完全对外隐藏真实对象。以及在调用真实对象时,代理还可以额外的处理另外的事。 比如下面...

    设计模式实现——代理模式

    例如,对于一个Web服务,我们可能需要在用户访问资源前进行身份验证,这就是一个很好的使用代理模式的例子。通过创建一个代理类,它首先检查用户权限,如果权限合法,则调用实际的服务处理请求。 总的来说,代理...

    android设计模式之代理模式

    代理模式在软件设计中是一种常用的设计模式,尤其在Android开发中,它可以帮助我们实现复杂的控制逻辑,隔离复杂性,以及提供额外的功能。在Android上下文中,代理模式常常用于数据加载、权限控制、事件处理等方面。...

    设计模式C++学习之代理模式(Proxy)

    代理模式是一种设计模式,它是结构型模式之一,主要用于在客户端和目标对象之间建立一个代理对象,以便控制对目标对象的访问。在C++中,代理模式可以用来为其他对象提供一种代理以控制对这个对象的访问,或者增加...

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    用生动的例子讲述设计模式

    代理模式为另一个对象提供一个代理以控制对这个对象的访问。当直接访问某个对象带来很多不便的时候,我们可以通过一个称之为“代理”的第三者对象来实现间接访问。 #### 适用场景: - 要创建的对象开销很大时。 - ...

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

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

    java实现代理模式

    用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明

    ios中的代理设置模式

    在iOS开发中,代理模式是一种常见的设计模式,用于对象间通信。它允许一个对象(委托者)将某些任务委托给另一个对象(代理),这样可以实现松耦合,提高代码的可读性和可维护性。标题“ios中的代理设置模式”正是...

Global site tag (gtag.js) - Google Analytics