JAVA设计模式之:代理模式

  • 格式:docx
  • 大小:10.77 KB
  • 文档页数:2

本文由我司收集整编,推荐下载,如有疑问,请与我司联系

JAVA 设计模式之:代理模式

2015/12/30 0 代理模式: 为其他对象提供一种代理以控制对这个对象的访

问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可

以在客户端和目标对象之间起到中介的作用。 静态代理:代理和被代理对象在代

理之前是确定的,都实现相同的接口或继承相同的对象 。

代理模式一般涉及到三种角色对象:抽象角色,代理角色和真实角色。代理角色

起到中介作用。

//抽象角色:通过接口或抽象类声明真实角色实现的业务方法。public interface

Swim {void isSwimming();//要实现的方法(表示正在游泳中)}

//代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法

来实现抽象方法,并可以附加自己的操作。public class TimeProxy implements Swim

{private Swim m;public TimeProxy(Swim m){super();this.m=m;};@Overridepublic void

isSwimming() {m.isSwimming();}}

// 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调

用。public class Person1 implements Swim {@Overridepublic void isSwimming() {long

startTime = System.currentTimeMillis();System.out.println( 开始进行计时... // 模拟一

个开车中的耗时 操作 try {Thread.sleep(new

Random().nextInt(1000));System.out.println( 正在游泳中... }catch (InterruptedException

e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println(

计时结束... System.out.println( 耗时时间: (endTime-startTime) 分钟 //本来应该是

毫秒的}}

测试代码:

public class Test {public static void main(String[] args) {Person1 car = new

Person1();TimeProxy p=new TimeProxy(car);p.isSwimming();}}

------运行结果---

开始进行计时...正在游泳中...计时结束...耗时时间:755 分钟