Java 的工厂方法及代理模式
来源:互联网 发布:淘宝灵符小镇岑一道长 编辑:程序博客网 时间:2024/04/30 05:28
Java 的工厂方法及代理模式
工厂方法(FactoryMethod)
概述:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
适用性:
- 当一个类不知道它所必须创建的对象的类的时候
- 当一个类希望由它的子类来指定它所创建的对象的时候
- 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
示例可参考:http://blog.csdn.net/jason0539/article/details/23020989
总结:
FactoryMethod模式是设计模式中应用最为广泛的模式,在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要。FactoryMethod解决的就是这个问题,它通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。
代理模式(Proxy)
概述:为其他对象提供一种代理以控制对这个对象的访问
示例:引用自http://blog.csdn.net/goskalrie/article/details/52458773
/**方式一:聚合式静态代理 * @author Goser (mailto:goskalrie@163.com) * @Since 2016年9月7日 *///1.抽象主题接口public interface Manager { void doSomething();}//2.真实主题类public class Admin implements Manager { public void doSomething() { System.out.println("Admin do something."); }}//3.以聚合方式实现的代理主题public class AdminPoly implements Manager{ private Admin admin; public AdminPoly(Admin admin) { super(); this.admin = admin; } public void doSomething() { System.out.println("Log:admin操作开始"); admin.doSomething(); System.out.println("Log:admin操作结束"); }}//4.测试代码 Admin admin = new Admin(); Manager m = new AdminPoly(admin); m.doSomething();//方式二:继承式静态代理//与上面的方式仅代理类和测试代码不同//1.代理类public class AdminProxy extends Admin { @Override public void doSomething() { System.out.println("Log:admin操作开始"); super.doSomething(); System.out.println("Log:admin操作开始"); }}//2.测试代码 AdminProxy proxy = new AdminProxy(); proxy.doSomething();
接口用法总结
- 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
- 通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。
- 接口主要用来定义规范。解除耦合关系
接口与抽象类的关系
阅读全文
0 1
- Java 的工厂方法及代理模式
- 浅论工厂方法模式和代理模式的结合
- 动态代理及反射在工厂模式上的应用
- Java的设计模式---工厂方法模式
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 工厂模式及工厂方法模式详解
- java工厂方法模式
- java工厂方法模式
- java 工厂方法模式
- java 工厂方法模式
- java 工厂方法模式
- java 工厂方法模式
- java工厂方法模式
- Java 工厂方法模式
- java工厂方法模式
- java 工厂方法模式
- Java工厂方法模式
- JAVA_OPTS设置
- 婷好游戏隐私权政策
- JSP中EL表达式不起作用
- case相关
- java.lang.IllegalStateException
- Java 的工厂方法及代理模式
- 【每日一个Linux命令】free
- 春季训练#1
- HandlerThread
- Java 的内部类
- EM算法求高斯混合模型参数估计-python
- 面向对象,线程两种实现,异常开始。
- iOS 临时会话 腾讯企点QQ添加方法
- caffe跑自己的数据