抽象工厂模式
来源:互联网 发布:淘宝商城宠物狗 编辑:程序博客网 时间:2024/06/11 21:15
之前两篇博客已经介绍了工厂模式中的简单工厂模式和工厂方法模式,这篇来介绍下抽象工厂模式。
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定具体类型的情况下,能够创建多个产品族的产品对象。
何为“产品族”,即具有某一个相同特点的许多不同产品,就可称为产品组,如浙江种植的苹果,香蕉,梨子;福建种植的苹果,香蕉,梨子,这就是具体的产品族。
抽象产品类
public interface Fruit { /* * 种植 */ public void plant();}public abstract class Apple implements Fruit {}public abstract class Banana implements Fruit {}
具体产品,由他们组成产品族
/* * 福建的苹果 */public class FujianApple extends Apple { @Override public void plant() { // TODO Auto-generated method stub System.out.println("福建种的苹果"); }}/* * 福建香蕉 */public class FujianBanana extends Banana { @Override public void plant() { // TODO Auto-generated method stub System.out.println("福建种的香蕉"); }}/* * 浙江苹果 */public class ZhejiangApple extends Apple { @Override public void plant() { // TODO Auto-generated method stub System.out.println("浙江种的苹果"); }} /* * 浙江的香蕉 */public class ZhejiangBanana extends Banana { @Override public void plant() { // TODO Auto-generated method stub System.out.println("浙江种的香蕉"); }}
抽象工厂类
public interface FruitFactory { /* * 生产苹果 */ public Fruit productApple(); /* * 生产香蕉 */ public Fruit productBanana();}
具体的工厂类
/* * 福建工厂 */public class FujianFactory implements FruitFactory { @Override public Fruit productApple() { // TODO Auto-generated method stub return new FujianApple(); } @Override public Fruit productBanana() { // TODO Auto-generated method stub return new FujianBanana(); }}/* * 浙江工厂 */public class ZhejiangFactory implements FruitFactory { @Override public Fruit productApple() { // TODO Auto-generated method stub return new ZhejiangApple(); } @Override public Fruit productBanana() { // TODO Auto-generated method stub return new ZhejiangBanana(); }}
主类
public class MainClass { public static void main(String[] args) { FruitFactory zhejiangFactory = new ZhejiangFactory(); Fruit appleZ = zhejiangFactory.productApple(); Fruit bananaZ = zhejiangFactory.productBanana(); appleZ.plant(); bananaZ.plant(); System.out.println("---------------------"); FruitFactory fujian = new FujianFactory(); Fruit appleF = fujian.productApple(); Fruit bananaF = fujian.productBanana(); appleF.plant(); bananaF.plant(); }}
抽象工厂模式与工厂方法模式区别,通俗直接的讲,工厂方法模式一个工厂只生产一个产品,而抽象工厂模式一个工厂生产一个产品族,可以包含n个产品
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- [IOS 开发] 无限后台运行
- 正则表达式匹配域名、网址、url
- 线性代数
- 消费者模式java多线程之哲学家进餐问题(5人5筷)
- 解决java java.io.FileNotFoundException: http:\localhost:8080 (文件名、目录名或卷)问题
- 抽象工厂模式
- Spring4.x with scheduling task
- Monochromatic Triangles[POI1997,bzoj2916]
- PHP编码规范/PSR-2
- 快速简单的定制一个时间轴布局(LinearLayout)
- 王学岗Viewpager(一)
- DataTable如何去除重复的行
- 使用Inputstream读取文件
- 2016年01月26日