简单工厂
简单工厂其实不是一种设计模式,反而比较像是一种编程习惯。
假设我们有一个披萨店,披萨种类包括CheesePizza(芝士披萨)、PepperoniPizza(辣味香肠披萨)等。
public class CheesePizza implements Pizza{
@Override
public void show() {
System.out.println("芝士披萨!");
}
}
public class PepperoniPizza implements Pizza {
@Override
public void show() {
System.out.println("辣味香肠披萨!");
}
}
理所当然的,我们需要建立一个Pizza的接口,我们写一个show方法模拟显示
public interface Pizza {
public void show();
}
PizzaFactory类会根据客户端不同的需求制造出不同的披萨
public class PizzaFactory {
public static Pizza createPizza(String type){
Pizza pizza = null;
if("cheese".equals(type)){
pizza = new CheesePizza();
}else if("pepperoni".equals(type)){
pizza = new PepperoniPizza();
}
return pizza;
}
}
使用时,只需要调用createPizza方法就可以制造出相关类型的披萨。
...
PizzaFactory.createPizza("cheese").show();
PizzaFactory.createPizza("pepperoni").show();
...
简单工厂涉及到工厂角色、抽象产品角色以及具体的产品角色。
- 工厂角色:在客户端的直接调用下创建产品对象。
- 抽象产品角色:由工厂创建你的对象的父类或他们共同的接口。
- 具体产品:产品的具体实例。