Java 工厂模式

问题:除了使用new操作符之外,还有更多制造对象的方法。
实例化这个活动不应该总是公开的进行,初始化也会经常造成“耦合”问题。

工厂类:
package factory;

public class SimplePizzaFactory {	
	public Pizza createPizza(String type){
		Pizza pizza = null;
		if(type.equals("cheese")){
			
		}else if(type.equals("clam")){
			
		}else if(type.equals("veggie")){
			
		}
		return pizza;		
	}	
}

静态工厂:利用静态方法定义一个简单的工厂。
优点:不需要使用创建对象的方法来实例化对象。
缺点:不能通过继承来改变创建方法的行为。

使用工厂来创建对象
package factory;

public class PizzaStore {
	SimplePizzaFactory factory;
	
	public PizzaStore(SimplePizzaFactory factory){
		this.factory = factory;
	}
	
	public Pizza orderPizza(String type){
		Pizza pizza;		
		pizza = factory.createPizza(type);		
		return pizza;
	}	
}

简单工厂:一种编程习惯,创建对象的方法通常声明为静态,比较轻量级。

新的需求:新增了许多加盟店,且每个加盟店需要加入自己个性化的处理。

工厂方法:abstract Product factoryMethod(String type)

package factory;

public  abstract class PizzaStore {
	
	public Pizza orderPizza(String type){
		Pizza pizza;		
		pizza = createPizza(type);
		pizza.prepare();
		pizza.bake();
		pizza.cut();
		pizza.box();		
		return pizza;
	}	
	
	abstract Pizza createPizza(String type);
}

工厂方法模式:所有工厂模式都用来封装对象的创建。
工厂方法模式通过让子类决定该创建对象是什么,来达到将对象创建的过程封装的目的。

工厂方法模式定义:工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。
工厂方法让类把实例化推迟到子类。

依赖倒置原则:要依赖抽象,不要依赖具体类

需求:保持生产披萨原料的一致,建造一家生产原料的工厂,并将原料运送到各家加盟店。

package factory;

public interface PizzaIngredientFactory {
	public Dough createDough();
	public Sauce createSauce();
	public Cheese createCheese();
	public Veggies[] createVeggies();
	public Pepperoni createPepperoni();
	public Clams createClam();	
}

抽象工厂模式:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

抽象工厂:当你需要创建产品家族和想让制造的相关产品集合起来时,你可以使用我。

工厂方法:我可以把客户代码从需要实例化的具体类中解耦。或者你目前还不知道将来需要实例化那些具体类时,
也可以用我。我的使用方式很简单,只要把我继承子类,并实现我的工厂方法就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值