创建型-抽象工厂

/*************************************************************************
 * 创建型: Singleton, Builder, Abstract Factory, Factory Method, Prototype
 * 结构型: Decorator, Composite, Proxy, Adapter, Facade
 * 行为型: Template Method, Iterator, Observer, Strategy, Command, ChainOR */
package factory;
/**
 * @author jiq
 * 类型:Creational
 * 定义: 抽象工厂模式(Abstract Factory) 提供一个接口,用于创建相关或者依赖对象的家族,
 * 		而不需要指明具体类。
 * OO设计原则: 要依赖抽象,而不要依赖具体类
 * 与工厂方法关系:抽象工厂模式用到了工厂方法模式。
 * 缺点: 如果要拓展创建的产品,需要更改抽象工厂接口。
 */
/**(抽象工厂)
 * 抽象的创建各种原料的工厂
 * 但是创建的具体原料是什么,由其子类决定
 * */
interface PizzaIngredientFactory{	
	public Dough createDough(); 	//工厂方法
	public Sauce createSauce();		//工厂方法
	public Cheese createCheese();	//工厂方法
}

/** 抽象工厂的子类,决定创建什么样的具体产品 */
class NYPizzaIndigredientFactory implements PizzaIngredientFactory{
	public Cheese createCheese() { return new QQQCheese(); }
	public Dough createDough() { return new YYYDough(); }
	public Sauce createSauce() { return new WWWSauce(); }
}

/** 抽象工厂的子类,决定创建什么样的具体产品 */
class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory{
	public Cheese createCheese() { return new EEECheese(); }
	public Dough createDough() { return new XXXDough(); }
	public Sauce createSauce() { return new WWWSauce(); }	
}
///
/**
 * 抽象的产品接口
 * */
interface Dough{}
interface Sauce{}
interface Cheese{}
class XXXDough implements Dough{}
class YYYDough implements Dough{}
class WWWSauce implements Sauce{}
class QQQCheese implements Cheese{}
class EEECheese implements Cheese{}
//测试类
public class AbstractFactoryTest {
	public static void main(String[] args) {
		PizzaIngredientFactory nyfactory  = new NYPizzaIndigredientFactory();
		nyfactory.createCheese();
		nyfactory.createDough();
		nyfactory.createSauce();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值