[初级]设计模式--静态代理模式
2015-10-12 16:59
323 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010398336/article/details/84744501
/** * 通过接口方式实现静态代理(聚合) * * 1、定义公共接口(IMoveable) * 2、定义真实对象 继承接口(IMoveable) 实现功能(Tank) * 3、定义代理类 继承接口(IMoveable) 实现前后逻辑/业务逻辑(TankTimeProxy/TankLogProxy) * * 调用的时候可以通过修改代理顺序来来改变逻辑实现顺序(test1/test2) * 优点: * 业务类只关注逻辑本身,灵活,重用性较好 * 缺点: * 1)一个接口只能服务于一种功能类,多功能类就需要多接口+多代理类(此时代理类里的逻辑很可能是重复的) * 2)接口不能随便修改,接口一修改,所有的真实对象和代理类都要改,维护性不好 */ public class StaticProxy2 { public static void main(String[] args) { test1(); System.out.println("-----------------------------"); test2(); } /** * 先进行时间记录,再进行log记录 */ public static void test1(){ Tank t = new Tank(); TankTimeProxy ttp = new TankTimeProxy(t); TankLogProxy tlp = new TankLogProxy(ttp); tlp.move(); } /** * 先进行log记录,再进行时间记录 */ public static void test2(){ Tank t = new Tank(); TankLogProxy tlp = new TankLogProxy(t); TankTimeProxy ttp = new TankTimeProxy(tlp); ttp.move(); } } /** * 公共接口 */ interface IMoveable{ public void move(); } /** * 真实对象 */ class Tank implements IMoveable{ @Override public void move() { for(int i=1;i<5;i++){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("坦克前行"+i*100+"米...."); } } } /** * 记录时间代理类 */ class TankTimeProxy implements IMoveable{ IMoveable m; public TankTimeProxy(IMoveable m){ this.m = m; } @Override public void move() { System.out.println("[TankTimeProxy]开始计时...."); long start = System.currentTimeMillis(); m.move(); long end = System.currentTimeMillis(); System.out.println("[TankTimeProxy]计时结束 共运行"+(end-start)); } } /** * 记录日志代理类 */ class TankLogProxy implements IMoveable{ IMoveable m; public TankLogProxy(IMoveable m){ this.m = m; } @Override public void move() { System.out.println("[TankLogProxy] print before log"); m.move(); System.out.println("[TankLogProxy] print after log"); } }
相关文章推荐
- Java 设计模式——静态代理模式和动态代理模式
- 设计模式之代理模式(静态代理)
- 设计模式——静态代理
- 设计模式—静态代理模式和动态代理模式(Proxy Pattern)
- 设计模式之静态代理&动态代理
- java与设计模式(六)-静态代理
- java设计模式-代理模式(静态代理,动态代理)
- java设计模式之代理模式 (静态&动态)
- JAVA 设计模式:静态代理VS动态代理
- 设计模式01-代理模式(静态代理)
- 【2月2日】设计模式:静态代理
- [设计模式]静态代理模式
- java代理设计模式(静态代理与动态代理)
- 静态代理设计模式
- Java设计模式之 静态代理和动态代理
- 代理模式(Proxy Pattern):静态代理 - 最易懂的设计模式解析
- Java设计模式之—静态代理和动态代理
- 设计模式-静态代理模式
- java设计模式学习笔记3 代理模式-静态代理
- 代理设计模式(普通静态代理、JDK动态代理、cglib动态代理)