您的位置:首页 > 其它

设计模式--代理(静态)

2011-04-08 16:24 302 查看
看点写点,日子就是这么这么过去了...

//聚合V继承

静态代理:

Moveable.java

package com.inspur.democreen.agent1;

public interface Moveable {
	void move();
	
}






Tank.java

package com.inspur.democreen.agent1;

import java.util.Random;

public class Tank implements Moveable {

	public void move() {
		System.out.println("this Tank is moving...");
		try {
			Thread.sleep(new Random().nextInt(10000));

		} catch (InterruptedException e) {
			e.printStackTrace();
		}

	}
	
	
}




TankLogProxy.java

package com.inspur.democreen.agent1;

public class TankLogProxy implements Moveable {
	Moveable t;
	public TankLogProxy(Moveable ttp) {
		super();
		this.t = ttp;
	}
	
	public void move() {
		System.out.println("Tank is starting...");
		t.move();
		System.out.println("Tank is ending...");
		
	}

	

}




TankTimeProxy.java

package com.inspur.democreen.agent1;

public class TankTimeProxy implements Moveable {
	Moveable t ;
	public TankTimeProxy(Moveable t) {
		super();
		this.t = t;
	}
	
	public void move() {
		long start = System.currentTimeMillis();
		t.move();
		long end = System.currentTimeMillis();
		System.out.println("time:"+(end-start));
	}

}




Client.java



package test1;

import com.inspur.democreen.agent1.Moveable;
import com.inspur.democreen.agent1.Tank;
import com.inspur.democreen.agent1.TankLogProxy;
import com.inspur.democreen.agent1.TankTimeProxy;

//聚合V继承
public class Client {
	//先记录时间,再记录日志
	public static void main(String [] args){
		Tank t = new Tank();
		TankTimeProxy ttp = new TankTimeProxy(t);
		TankLogProxy tlp = new TankLogProxy(ttp); 
		Moveable m = tlp;
		m.move();
	}
	
	
	//先记录日志再记录时间
	/*public static void main(String [] args){
		Tank t = new Tank();
		
		TankLogProxy tlp = new TankLogProxy(t);
		TankTimeProxy ttp = new TankTimeProxy(tlp);
		Moveable m = ttp;
		m.move();
	}*/
}




运行结果:

Tank is starting...
this Tank is moving...
time:4281
Tank is ending...





静态代理 原理---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: