设计模式之禅学习之抽象工厂模式
1、抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。工厂方法模式中的工厂生产的往往都是同一级别的产品(比如生产的就是人);而抽象工厂模式的工厂生产的产品是分等级的(比如生产的是男人和女人,虽然都是人,但是是多品种)。用抽象工厂模式是一般都是多业务品种,多业务分类,会有多个工厂实现类,来生产不用业务品种。
2、产品类的等级,也就是产品是分种类的:
下面用代码实现上图中的产品分类逻辑:
首先定义最上面的产品接口:
package com.wang.factoryPattern.abstractF; /** * 产品接口定义 * @author HeJW * */ public interface IProduct { //每个产品共有的方法 public void shareMethod(); //每个产品相同的方法,不同的实现 public abstract void doSomething(); }
然后是抽象产品的分类:
package com.wang.factoryPattern.abstractF; public class Product1Factory implements IProductFactory { @Override public AbstractProductA productAFactory() { return new ProductA1(); } @Override public AbstractProductB productBFactory() { return new ProductB1(); } }
这里只给出了一种分类,实际项目中应该是多中的,我们可以在定义多个实现,
在往下就是具体的产品类的。只要分别实现抽象产品就可以了。一下是一个例子:
package com.wang.factoryPattern.abstractF; public class ProductA1 extends AbstractProductA { @Override public void doSomething() { System.out.println("产品A的第1个实现"); } }
3、创建工厂。创建工厂接口时,应该按产品的分类,分别定义生产这种产品的工厂方法:
package com.wang.factoryPattern.abstractF; /** * 抽象工厂定义 * @author HeJW * */ public interface IProductFactory { //A系类产品工厂 public AbstractProductA productAFactory(); //B系类产品工厂 public AbstractProductB productBFactory(); }
实现该工厂接口时,分别实现产品实例即可,以下是一个工厂实现的例子:
package com.wang.factoryPattern.abstractF; public class Product1Factory implements IProductFactory { @Override public AbstractProductA productAFactory() { return new ProductA1(); } @Override public AbstractProductB productBFactory() { return new ProductB1(); } }
4、编写一个场景类:
package com.wang.factoryPattern.abstractF; public class App { public static void main(String[] args) { IProductFactory factory1 = new Product1Factory(); IProductFactory factory2 = new Product2Factory(); AbstractProductA pa1 = factory1.productAFactory(); pa1.doSomething(); AbstractProductA pa2 = factory2.productAFactory(); pa2.doSomething(); AbstractProductB pb1 = factory1.productBFactory(); pb1.doSomething(); AbstractProductB pb2 = factory2.productBFactory(); pb2.doSomething(); } }
附上工程代码,欢迎下载
相关推荐
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
设计模式-抽象工厂模式(讲解及其实现代码)
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂...
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
抽象工厂模式ppt。抽象工厂模式ppt。抽象工厂模式ppt。
设计模式--抽象工厂模式实现多数据库连接 设计模式,.net设计模式,抽象工厂
java设计模式【之】抽象工厂模式【源码】【场景:制作咖啡】 * 抽象工厂 * * 创建对象实例时,不要直接 new 类, 而是把这个new 类的动作放在一个工厂的方法中,并返回。 * 在工厂方法的基础上,进一步抽象工厂...
设计模式 - 抽象工厂模式
抽象工厂模式(Abstract Factory Pattern) 引入: 在前面介绍的两个创建型模式里面,我们解决的都是有关"new"的问题,用它们来避免显式指定类创建对象。我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂...
抽象工厂模式.ppt抽象工厂模式.ppt
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 设计模式 抽象工厂模式 三层架构 要您一个资源分,也算是对我的尊重,谢谢下载。
抽象工厂模式实现计算器源码,学习C#设计模式。
在C#项目开发中设计模式中的抽象工厂模式应用实例实现。
抽象工厂模式的实现源代码,清晰易懂,还有详细的说明
通过抽象工厂搜提供的接口,可以创建产品的家族,利用这个接口书写代码,我们...这是与博客《抽象工厂模式--GOF的23个之一》配套实例源代码,具体说明欢迎阅读。 如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com
项目需求: 有两间塑料加工厂(A厂仅生产容器类产品;B厂仅生产模具类产品);... 抽象工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,而不能为新的产品等级结构的增加提供这样的方便。
c++ java 抽象工厂模式