代理模式分静态和动态两种。 先讲静态的, 这个比较简单。
我们以“幕后黑手雇职业杀手+枪杀钉子户” 为场景来介绍。
客户端代码
public class Client { public static void main(String[] args) { // 幕后黑手想干掉"钉子户" Killer manipulator = new Manipulator(); // 职业杀手出场 Killer hitman = new Hitman(manipulator); // 杀手行动 hitman.setTarget("钉子户"); hitman.kill(); } }
执行结果:
引用
钉子户 已经被锁定
钉子户 被干掉了
钉子户 被干掉了
先来看看基本接口, 也就是要做什么
public interface Killer { void setTarget(String target); void kill(); }
然后就是两个具体的实现: 幕后黑手 + 职业杀手
public class Manipulator implements Killer { private String target; @Override public void setTarget(String target) { this.target = target; System.out.println(target + " 已经被锁定"); } @Override public void kill() { System.out.println(target + " 被干掉了"); } } public class Hitman implements Killer { private Killer killer; public Hitman(Killer killer) { this.killer = killer; } @Override public void setTarget(String target) { killer.setTarget(target); } @Override public void kill() { killer.kill(); } }
毛简单吧, 哈哈。