java设计模式----代理模式
2015-11-30 15:08
501 查看
代理模式使用了多态,主要是便于扩展,代理类和被代理类使用的是同一个接口。
代码演示,先创建一个接口Women。
Women.java
创建两个要被代理的类,实现Women接口。
Juli.java
Lily.java
创建一个代理类Proxy:
proxy.java
Test:
测试结果:
主要好处在于,以后要添加新的被代理类不需要改动原来的代理类代码,只需要实现接口就行,解耦合。
代码演示,先创建一个接口Women。
Women.java
package proxy; public interface Women { public void eat(); public void paly(); }
创建两个要被代理的类,实现Women接口。
Juli.java
package proxy; public class Juli implements Women{ @Override public void eat() { System.out.println("i'm Juli,i love eat banana"); } @Override public void paly() { System.out.println("i'm Juli,i love swimming"); } }
Lily.java
package proxy; public class Lily implements Women{ @Override public void eat() { System.out.println("i'm Lily,i love eat apple"); } @Override public void paly() { System.out.println("i'm Lily, i love play football"); } }
创建一个代理类Proxy:
proxy.java
package proxy; public class Proxy implements Women { private Women women; public Proxy() { this.women = new Lily();//默认是Lily } public Proxy(Women women){ this.women=women; } @Override public void eat() { this.women.eat(); } @Override public void paly() { this.women.paly(); } }
Test:
package proxy; public class Test { public static void main(String[] args) { Proxy p; p=new Proxy(); p.eat(); p.paly(); Juli j=new Juli(); p=new Proxy(j); j.eat(); j.paly(); } }
测试结果:
i'm Lily,i love eat apple i'm Lily, i love play football i'm Juli,i love eat banana i'm Juli,i love swimming
主要好处在于,以后要添加新的被代理类不需要改动原来的代理类代码,只需要实现接口就行,解耦合。
相关文章推荐
- spring源码剖析(三)自定义标签实现及使用
- 【Struts2】(3)参数传递
- Java中 instanceof 关键字
- JavaEE_Mybatis_SpringMVC_Mybaits_lesson6__MyBatis传递pojo对象实现综合查询
- IO概述
- json、javaBean、xml互转的几种工具介绍
- eclipse以外关闭,打开闪退
- 我为什么没有分享Java学习方法
- 如何在SpringMVC中获取request对象
- SSH框架之jar包讲解
- Spring整合mq
- Eclipse 链接 微软安卓模拟器(windowsAndroid)
- Drools5集成Spring3
- java向上取整函数Math.ceil()
- myeclipse 8.5利用phonegap开发android程序
- SpringMvc快速入门
- 在Spring MVC中,事务可以加在Controller层
- eclipse设置svn代理
- Spring事务配置的五种方式
- 关于eclipse svn插件的 svn:ignore无法使用的问题