java简单静态代理(聚合)
定义一个接口
package com.beckham;
/*
* 定义一个接口
*/
public interface Move {
public void move() ;
}
核心的实现类
package com.beckham;
/*
* 最初的接口实现
*/
public class Tank implements Move {
public void move() {
System.out.println("坦克开动.......");
}
}
实现方法时记录时间
package com.beckham;
public class TankTime implements Move {
// 实现最原始的接口
private Move move;
public TankTime(Move move) {
this.move = move;
}
public void move() {
System.out.println(System.currentTimeMillis());
move.move();
}
}
实现方法前后加入日志
package com.beckham;
public class TankLog implements Move {
// 实现最原始的接口
private Move move;
public TankLog(Move move) {
this.move = move;
}
public void move() {
System.out.println("坦克开始日志......");
move.move();
System.out.println("坦克结束日志......");
}
}
聚合实现
package com.beckham;
public class Test {
public static void main(String[] args) {
// 最初的实现类
Move m = new Tank();
// 最里面的代理
TankLog tl = new TankLog(m);
// 外面的代理
TankTime tt = new TankTime(tl);
//接口的聚合
tt.move();
}
}
测试结果
1262316711937
坦克开始日志......
坦克开动.......
坦克结束日志......
到此为止,一个简单的静态代理就完成了,其实完成的功能就是要在已经实现的接口的方法前后加一些与核心无关的功能,采用接口的聚合实现比较灵活。
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
/*
* @ Lunar.java
* @ 根据公历日期y/m/d推算出农历日期(属象,天支地干等)
* @ author Qiangwei He
* @ v1.0 2009/12/10 jdk1.6 compile
*
* field:
* int y,m,d; &n ......
声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界布满幻觉。声音是多媒体技术的基础。这就是Sun公司的Java媒体技术开发小组忙于预备Java Sound 1.0 API并将其包含于下一版本的JAVA开发工具库中的原因。
在JAVA2平台出现之前,JAVA语言只能处理电话音质的声音,以单声道8KHZ的采样频率存储为&mu ......
看到一篇文章感觉很好,转过来了... http://bbs.chinaitlab.com/thread-167286-1-2.html
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
1 OutputStreamWri ......