定义一个接口
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
坦克开始日志......
坦克开动.......
坦克结束日志......
到此为止,一个简单的静态代理就完成了,其实完成的功能就是要在已经实现的接口的方法前后加一些与核心无关的功能,采用接口的聚合实现比较灵活。