设计模式学习笔记五:抽象工厂模式

来源:互联网 发布:藏民对十一世班禅 知乎 编辑:程序博客网 时间:2024/05/01 03:06

抽象工厂模式是工厂方法模式的进一步抽象,适用于有多个产品族的场景,拿美食举例:

美食可分为中餐和西餐,中餐又有东北菜,湘菜,粤菜等。而西餐又有法式菜、美式菜、德式菜等。这种可以称之为产品族。

个人认为抽象工厂顶级类应该都是单例的。


直接上代码了,代码与上面举例业务无关:


package com.array7.abstract_factory;/** * @author array7 * */public class Run {public static void main(String[] args) {ProductFactory.getInstance().createPorductA1().create();ProductFactory.getInstance().createPorductB1().create();ProductFactory.getInstance().createPorductA2().create();ProductFactory.getInstance().createPorductB2().create();}}abstract class ProductAbstractFactory {public abstract IProductA createPorductA1();public abstract IProductA createPorductA2();public abstract IProductB createPorductB1();public abstract IProductB createPorductB2();}class ProductFactory extends ProductAbstractFactory {private static final ProductFactory facotry = new ProductFactory(); private ProductFactory() {/*closed*/}public static ProductFactory getInstance() {return facotry;}@Overridepublic IProductA createPorductA1() {return new ProductA1();}@Overridepublic IProductA createPorductA2() {return new ProductA2();}@Overridepublic IProductB createPorductB1() {return new ProductB1();}@Overridepublic IProductB createPorductB2() {return new ProductB2();}}interface IProductA {void create();}interface IProductB {void create();}class ProductA1 implements IProductA {@Overridepublic void create() {System.out.println("product A1");}}class ProductA2 implements IProductA {@Overridepublic void create() {System.out.println("product A2");}}class ProductB1 implements IProductB {@Overridepublic void create() {System.out.println("product B1");}}class ProductB2 implements IProductB {@Overridepublic void create() {System.out.println("product B2");}}


0 0
原创粉丝点击