`

8种结构型模式 之1 PROXY 代理模式

 
阅读更多
代理模式也叫委托模式,给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。是一项基本的设计技巧。分为普通代理和强制代理。 另一个角度又分为静态代理和动态代理。



Subject接口
public interface Subject {
    void operation(String arg);
}

RealSubject类
public class RealSubject implements Subject {

    @Override
    public void operation(String arg) {
        System.out.println("实际操作, 参数:" + arg);
    }

}

ProxySubject类
public class ProxySubject implements Subject {

    private Subject beProxy;
    
    public ProxySubject(Subject beProxy) {
        this.beProxy = beProxy;
    }

    @Override
    public void operation(String arg) {
        System.out.println("代理操作, 参数:" + arg);
        beProxy.operation(arg);
    }

}

TestProxy 测试类:
public class TestProxy {

    public static void main(String[] args) {
        RealSubject realSubject = new RealSubject();
        ProxySubject proxySubject = new ProxySubject(realSubject);
        
        System.out.println("------------Without Proxy ------------");
        doSomething(realSubject);
        
        System.out.println("------------With Proxy ------------");
        doSomething(proxySubject);
    }

    public static void doSomething(Subject subject){
        subject.operation("flynewton");
    }
}

测试结果:
引用
------------Without Proxy------------
实际操作,参数:liuwentao
------------With Proxy------------
代理操作,参数:liuwentao
实际操作,参数:liuwentao


游戏代练帮忙打怪



1:普通代理:由代理生成真实角色,真是角色不能直接new出来



约定真实角色不能 直接 new ,必须通过代理类才能操作。

真实角色,构造函数中 有 代理类参数,做判断
public GamePlayer(IGamePlayer _gamePlayer,String _name) throws Exception{
	if(_gamePlayer == null ){
		throw new Exception("不能创建真是角色!");
	}else{
		this.name = _name;
	}
}

代理类构造函数中 new 真实角色
public GamePlayerProxy(String name){
	try {
		gamePlayer = new GamePlayer(this,name);
	} catch (Exception e) {

	}
}

测试类:
IGamePlayer proxy = new GamePlayerProxy("张三");
proxy.login("zhangsan","password");


2:强制代理:由真是角色指定代理,不是指定的代理不能调方法



测试:

		//定义个游戏的角色
		IGamePlayer player = new GamePlayer("张三");
		//获得指定的代理
		IGamePlayer proxy = player.getProxy();
		//开始打游戏,记下时间戳
		System.out.println("开始时间是:2009-8-25 10:45");
		proxy.login("zhangSan", "password");
		//开始杀怪
		proxy.killBoss();
		//升级
		proxy.upgrade();
		//记录结束游戏时间
		System.out.println("结束时间是:2009-8-26 03:40");

  • 大小: 134 KB
  • 大小: 25.2 KB
  • 大小: 25.2 KB
  • 大小: 48.9 KB
  • 大小: 57.4 KB
分享到:
评论
1 楼 xiongjinpeng 2012-11-08  
不错,易懂。

相关推荐

    结构型模式之代理模式(Proxy)

    代理模式是一种设计模式,属于结构型模式之一,其主要目的是为其他对象提供一个代理,以控制对该对象的访问。在实际应用中,代理模式能够帮助我们实现如下的功能: 1. 远程代理:代理对象可以代表一个位于远程系统...

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

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

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式)

    ### C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) #### 重要概念:代理模式 代理模式是一种常用的结构型设计模式,它通过为另一个对象提供一个代理,来控制对该对象的访问。这种模式在软件工程中...

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) (Level 300)

    本文将深入探讨C#中的一个关键设计模式——代理模式,它属于结构型模式的一种,适用于管理和控制对象的访问。我们将从概念、分类、实现方式以及实际应用等方面进行详细的讲解。 1. **代理模式概念**: 代理模式是一...

    设计模式之代理模式Proxy

    代理模式是设计模式中的一种结构型模式,它在对象交互中起到了中介的作用,允许通过代理对象来控制对原对象的访问。代理模式的核心思想是为一个对象提供一个替身,以便增加新的功能或者控制对原对象的访问。这种模式...

    C#面向对象设计模式纵横谈\13 结构型模式Proxy代理模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源... 这是第13节:结构型模式Proxy代理模式

    c++-设计模式之代理模式(Proxy)

    代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于保护、延迟加载、记录请求等场景,可以在不改变原有对象的情况下为其增加新的功能。 代理...

    结构型模式的几个模式

    本篇文章将重点讨论结构型模式中的几种关键类型:外观模式、代理模式、适配器模式以及桥接模式。 #### 二、结构型模式简介 结构型模式主要关注如何将类或对象组合成更大的结构。这类模式强调的是如何构建与组织类...

    详解设计模式中的proxy代理模式及在Java程序中的实现

    综上所述,Proxy代理模式是设计模式中的一个重要组成部分,它允许我们在不改变原始对象的情况下,通过代理对象实现对原始对象的控制和扩展。在Java中,通过Java的Proxy类和InvocationHandler接口,我们可以轻松地...

    c++设计模式-结构型模式-代理模式

    代理模式是一种在面向对象设计中广泛应用的结构型设计模式,它提供了一种对目标对象进行间接访问的方式,使得客户端可以通过代理对象与真实对象进行交互,而无需直接接触真实对象。这样做的好处包括增加灵活性、控制...

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

    在这些模式中,代理模式(Proxy Pattern)是一种常用的结构型设计模式,它允许我们为一个对象创建一个代理,该代理对象在客户端和目标对象之间起到中介的作用,可以增加额外的功能或控制访问。 代理模式分为两种...

    [结构型模式] 代理模式的理解

    代理模式是一种设计模式,属于结构型模式的一种,它在软件设计中扮演着非常重要的角色。代理模式的主要目的是为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,代理类作为真实对象的代表,它在客户端和...

    代理模式 Proxy Pattern

    代理模式是一种结构型设计模式,它允许程序员为某对象创建一个代理对象来控制对该对象的访问。简单来说,就是在不修改原始类的基础上,通过引入代理对象来扩展类的行为或者控制对原始类的访问。这种模式在软件工程中...

    设计模式 之 “代理模式[Proxy Pattern]”

    **代理模式(Proxy Pattern)**是软件设计模式中的结构型模式之一,它在对象访问控制、增加额外功能或在客户端与目标对象之间提供一个中介等方面有广泛的应用。在代理模式中,代理类作为真实对象的代表,它持有真实...

    23种设计模式结构图

    结构型模式 1. 门面模式(Facade) 门面模式是一种结构型设计模式,它提供了一个统一的接口来访问多个子系统的多个不同的接口,来控制访问的粒度。这种模式的优点是,它可以让客户更方便地访问子系统。 2. 代理...

    设计模式原理与应用之结构型模式.pptx

    本篇主要讨论了七种结构型模式:Adapter、Bridge、Composite、Decorator、Façade、Flyweight和Proxy。 1. **Adapter模式**: - 适配器模式旨在解决接口不兼容的问题,使得原本无法协同工作的类能够一起工作。它...

    23种设计模式 (创建型,结构型,行为型)

    代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter ...

Global site tag (gtag.js) - Google Analytics