博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象工厂模式
阅读量:5965 次
发布时间:2019-06-19

本文共 2815 字,大约阅读时间需要 9 分钟。

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

Java代码:

interface Service {
void method1(); void method2();}interface ServiceFactory {
Service getService();}class Implementation1 implements Service {
public void method1() { System.out.println("Implementation1:method1()"); } public void method2() { System.out.println("Implementation1:method2()"); }}class Implementation1Factory implements ServiceFactory {
public Service getService() { return new Implementation1(); }}class Implementation2 implements Service {
public void method1() { System.out.println("Implementation2:method1()"); } public void method2() { System.out.println("Implementation2:method2()"); }}class Implementation2Factory implements ServiceFactory {
public Service getService() { return new Implementation2(); }}public class Factories {
public static void serviceConsumer(ServiceFactory fact) { Service s = fact.getService(); s.method1(); s.method2(); } public static void main(String[] args) { serviceConsumer(new Implementation1Factory()); serviceConsumer(new Implementation2Factory()); }}

使用内部类的Java代码:

interface Service {
void method1(); void method2();}interface ServiceFactory {
Service getService();}class Implementation1 implements Service {
public void method1() { System.out.println("Implementation1:method1()"); } public void method2() { System.out.println("Implementation1:method2()"); } public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation1(); } };}class Implementation2 implements Service {
public void method1() { System.out.println("Implementation2:method1()"); } public void method2() { System.out.println("Implementation2:method2()"); } public static ServiceFactory factory = new ServiceFactory() { public Service getService() { return new Implementation2(); } };}public class Factories {
public static void serviceConsumer(ServiceFactory fact) { Service s = fact.getService(); s.method1(); s.method2(); } public static void main(String[] args) { serviceConsumer(Implementation1.factory); serviceConsumer(Implementation2.factory); }}

总结

  1. 简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。
  2. 工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。
  3. 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。

转载地址:http://svxax.baihongyu.com/

你可能感兴趣的文章
IE维护(IEM)策略不再适用于IE10及后续IE版本
查看>>
Java7中的ForkJoin并发框架初探(下)—— ForkJoin的应用
查看>>
java中的重量级与轻量级概念
查看>>
Linux设备驱动工程师之路——硬件访问及混杂设备LED驱动
查看>>
进程和线程<一>
查看>>
远程算数程序——版本v1.0
查看>>
Mysql常见四种索引的使用
查看>>
说说Android桌面(Launcher应用)背后的故事(一)——揭开她神秘的面纱
查看>>
第一篇:zc706 开箱及开发环境搭建
查看>>
python-冒泡排序
查看>>
Mac下修改Hosts文件工具——Gas Mask
查看>>
协程函数应用
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
Add Two Numbers
查看>>
Asp.net技巧:gridview获取当前行索引的方法
查看>>
让 vim 在按ESC时自动保存
查看>>