Java的代理模式(一)静态代理
来源:互联网 发布:java框架有必要学吗 编辑:程序博客网 时间:2024/05/16 17:17
静态代理的有两种方式:1.继承被代理类;2.实现被代理类的接口
方式一:继承被代理类实现代理模式
类图如下(画图软件画的,画的不好,能看懂就好)
接口代码如下(Girl.java):
public interface Girl { boolean date(int money);}
被代理类(GirlZhang.java):
//实现Girl接口public class GirlZhang implements Girl { public boolean date(int money) { if(money>100000){ System.out.println("可以约会!"); return true; } System.out.println("太穷不约会!"); return false; }}
代理类(Proxy1.java):
//继承GirlZhang类,重写父类方法实现代理public class Proxy1 extends GirlZhang { public boolean date(int money) { doSomethingBefor(); boolean flag = super.date(money); doSomethingAfter(); return flag; } private void doSomethingAfter() { System.out.println("约会完,代理人干一些事情"); } private void doSomethingBefor() { System.out.println("约会前,代理人准备工作"); }}
主方法测试(Main.java):
public class Main { public static void main(String[] args){ Proxy1 proxy1 = new Proxy1(); proxy1.date(1000000); }}
这种继承理类实现的静态代理,有一个很明显得缺陷,就是如果要的继续给被代理类添加拓展的新的功能,就需要继续继承上一个代理类,这样拓展次数过多时,继承次数就太
多,不利于管理,性能也不好。
方式二:实现被代理类的接口
类图如下:
接口和被代理类代码同第一种方式,这里不再赘述。
代理类(Proxy2.java):
//实现Girl接口public class Proxy2 implements Girl{ private Girl girl; public Proxy2(Girl girl){ this.girl=girl; } public boolean date(int money) { doSomethingBefor(); boolean flag = girl.date(money); doSomethingAfter(); return false; } private void doSomethingAfter() { System.out.println("约会完,代理人干一些事情"); } private void doSomethingBefor() { System.out.println("约会前,代理人准备工作"); }}
主方法测试(Main.java):
public class Main { public static void main(String[] args){ Proxy2 proxy2 = new Proxy2(new GirlZhang()); proxy2.date(1000000); }}
使用实现接口的方法实现静态代理,对比使用继承来实现代理,要好一些,不用多重继承,但是如果要拓展功能,仍然需要建立许多的实现类,来添加新的功能,这对编码也带
了一些不便。所以要更好的处理这些东西,就需要使用动态代理了。
阅读全文
1 0
- Java 代理模式(一) 静态代理
- Java的代理模式(一)静态代理
- java代理模式的学习(动态代理+静态代理)
- java的代理模式(动态代理和静态代理)
- JAVA设计模式之【代理模式】一(静态代理)
- 代理模式(一)静态代理
- 代理模式(Proxy)一 静态代理
- 代理模式一(静态代理)
- Java代理模式(静态代理)
- java的代理模式(静态和动态代理)
- java代理(一)--静态代理
- java代理模式---静态代理
- JAVA代理模式--静态代理
- Java代理模式-静态代理
- java 静态代理与动态代理(代理模式)
- java代理设计模式(静态代理与动态代理)
- 代理模式(静态代理+动态代理)——JAVA
- 代理模式(静态代理和动态代理) JAVA
- Linux下通过命令行创建和设置一个MySQL用户
- Android 运动的小车
- 重定位
- 6.S5PV210时钟初始化c语言实现代码
- 如何设计一个在线烧录方案?
- Java的代理模式(一)静态代理
- lintcode --不同的二叉查找树
- PAT-L1-002. 打印沙漏
- 深入理解JVM--我的学习笔记
- NYOJ 石子合并(一)经典区间DP
- nodejs服务端使用jquery操作Dom
- TSUNG学习教程 工作原理(三)
- Session和Cookie的区别与联系
- 【python】计算π的值