23种设计模式之代理模式
2018-01-25 14:14
316 查看
静态代理(静态定义代理类)
这里我举一个就是明星和经济人的关系,经纪人可以管理面谈,签合同,订票,收钱,除了唱歌明星接口
public interface Star { /** * 面谈 */ void confer(); /** * 签合同 */ void signContract(); /** * 订票 */ void bookTicket(); /** * 唱歌 */ void sing(); /** * 收钱 */ void collectMoney(); }
真实类对象
public class RealStar implements Star { @Override public void bookTicket() { System.out.println("明星订票"); } @Override public void collectMoney() { System.out.println("明星收钱"); } @Override public void confer() { System.out.println("明星面试"); } @Override public void signContract() { System.out.println("明星签合同"); } @Override public void sing() { System.out.println("明星(周杰伦本人)唱歌"); } }
代理人对象
public class ProxyStar implements Star { private RealStar star; public ProxyStar(RealStar star) { this.star = star; } @Override public void bookTicket() { System.out.println("经纪人订票"); } @Override public void collectMoney() { System.out.println("经纪人收钱"); } @Override public void confer() { System.out.println("经纪人面试"); } @Override public void signContract() { System.out.println("经纪人签合同"); } @Override public void sing() { star.sing(); } }
测试
RealStar star = new RealStar(); ProxyStar proxy=new ProxyStar(star); proxy.confer(); proxy.signContract(); proxy.bookTicket(); proxy.sing(); proxy.collectMoney();
动态代理对象
创建一个StartHandler继承于InvocationHandlerpublic class StartHandler implements InvocationHandler { Star realStar; public StartHandler(Star realStar) { this.realStar = realStar; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object object = null; if (method.getName().equals("sing")) { object = method.invoke(realStar, args);//激活这个方法 } return object; } }
测试
RealStar realStar = new RealStar(); StartHandler handler = new StartHandler(realStar); Star star = (Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader() , new Class[]{Star.class}, handler); star.sing();
相关文章推荐
- Java23种设计模式——代理模式
- 23种设计模式(7)-代理模式
- 【Unity与23种设计模式】代理模式(Proxy)
- 23种设计模式之代理模式
- 23种设计模式(7)-代理模式
- 【23种设计模式】之 代理模式(Representative Pattern)
- 23种设计模式(6):代理模式
- Java开发中的23种设计模式详解----代理模式(Proxy)
- 23种设计模式-----代理模式(proxy)
- 23种设计模式----------代理模式(一)
- JAVA的23种设计模式---代理模式(一)
- JAVA的23种设计模式---代理模式(二)
- Java 23种设计模式之代理模式
- 【Unity与23种设计模式】代理模式(Proxy)
- 23种设计模式----------代理模式(二)
- Java 23种设计模式之代理模式
- Java23种设计模式之-----代理模式
- GoF23种设计模式之结构型模式之代理模式
- 23种设计模式----------代理模式(三) 之 动态代理模式
- 23种设计模式之代理模式2