/** * 明星接口:定义规范,约定的作用。 */ public interface IStar { /** * 唱歌 */ void singing(double money); /** * 拍戏 */ void play(double money); } |
实现: |
/** * 明星刘德华,是目标对象 */ public class LiuDeHuaStar implements IStar { @Override public void singing(double money) { System.out.println("谢霆锋唱歌一级棒,收费标准:"+money); } @Override public void play(double money) { System.out.println("刘德华拍戏棒棒滴,收费标准:"+money); } } |
代理 |
/** * 静态代理, * 1. 代理对需要实现与目标对象一样的接口 * 2. 代理类中需要维护一个目标对象 */ public class LiuDeHuaProxy implements IStar{ // 创建目标对象 private IStar target = new LiuDeHuaStar(); @Override public void singing(double money) { if (money > 200000) { // 调用目标对象方法 target.singing(money); }else { System.out.println("我很忙,后期再合作!"); } } @Override public void play(double money) { if (money > 200000) { // 调用目标对象方法 target.play(money); }else{ System.out.println("我很忙,后期再合作!"); } } } |
测试 |
public class App { public static void main(String[] args) { // 创建代理对象 IStar proxy = new LiuDeHuaProxy(); // 调用代理对象的方法,代理对象会访问目标对象,再目标对象实现基础上额外扩展了一些功能:验证 proxy.play(1); proxy.singing(100001); } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |