静态代理(JAVA设计模式)

来源:互联网 发布:加壳软件 编辑:程序博客网 时间:2024/05/19 21:44

代理:一个角色代表另一个角色来完成某些特定的功能,当我们需要在一个方法的前后添加逻辑的时候(日志,事务等)可以使用代理。

静态代理可以使用两种方式实现:一种是继承,一种是聚合。

1.定义接口Moveable

2.实现类Tank

3.在Tank的move方法前后添加时间日志(继承方式)或系统日志(聚合方式)


public interface Moveable {void move();}

//需要代理的对象public class Tank implements Moveable{public void move() {System.out.println("tank move");}}


//第一种:以继承的方式实现静态代理,在方法前后添加逻辑public class TimeProxy extends Tank{@Overridepublic void move() {System.out.println("timeProxy start...");super.move();System.out.println("timeProxy end...");}public static void main(String[] args) {Moveable m = new TimeProxy();m.move();//调用了代理后的方法。}}

//第二种:以聚合的方式实现代理类,为方法前后添加日志public class LogProxy implements Moveable{Moveable m;public LogProxy(Moveable m) {this.m = m;}public void move() {System.out.println("move log start...");m.move();System.out.println("move log end...");}public static void main(String[] args) {Moveable mm = new Tank();mm = new LogProxy(mm);//这个代理类只能给Moveable接口的类进行代理,我们需要创建任意接口的代理类(动态代理)mm.move();}}

原创粉丝点击