简单工厂模式:其实不是一个设计模式,是一种编程习惯,就是把创建对象的代码挪到了另一个类里。
写个简单一点的实例:就是有个pizza工厂,我订什么披萨,你就给我生产什么pizza
类图:
1.先定义pizza类 具有订pizza功能
class Pizza {
private SimpleFactory factory;
public Pizza(){//这个无参是为了子类不用也得写个有参构造
}
public Pizza(SimpleFactory factory){//创建对象时拿到工厂对象
this.factory = factory;
}
public void orderPizza(String type){//订pizza
factory.createPizza(type);
}
}
2.再来定义几个具体类型pizza
class PandaPizza extends Pizza{
public PandaPizza(){
System.out.println("welcome to order pandaPizza ,here you are.");
}
}
class KongfuPizza extends Pizza{
public KongfuPizza(){
System.out.println("welcome to order kongfuPizza ,here you are..");
}
}
3.现在来定义pizza工厂
class SimpleFactory{
Pizza pizza;
public Pizza createPizza(String type){//根据不同类型创建对象
if(type.equals("panda")){
pizza = new PandaPizza();
}else if(type.equals("kongfu")){
pizza = new KongfuPizza();
}else pizza = null;
return pizza;
}
}
4.简单调试、来订pizza吧
public class Test{
public static void main(String args[]{
SimpleFactory factory = new SimpleFactory();
Pizza pizza = new Pizza(factory);
pizza.orderPizza("panda");
pizza.orderPizza("kongfu");
pizza.orderPizza("gaga");
}
}
运行结果:
welcome to order pandaPizza ,here you are.
welcome to order kongfuPizza ,here you are..
一目了然,就是把创建对象的代码拿到SimpleFactory类里了,使得以后再有pizza类型的变化时不用修改pizza类,达到pizza类与创建对象解耦。