对象的创建
在java中对象是由new关键字创建,从技术上来说,用new创建对象没什么大问题,但是这种new出来的对象缺乏灵活性;**工厂模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到之类。**这可能就是我一直以来无法理解控制反转意义的原因;
具体代码-创建pizza
- 抽象类
public abstract class Pizza {
public void prepare(){};
public void bake(){};
public void cut(){};
public void box(){};
}
- 具体子类
/**
* Salad披萨
* @author utopia
* @date 20200630
*/
public class SaladPizza extends Pizza {
@Override
public void prepare(){};
@Override
public void bake(){};
@Override
public void cut(){};
@Override
public void box(){};
}
/**
* Tomato披萨
* @author utopia
* @date 20200630
*/
public class TomatoPizza extends Pizza {
@Override
public void prepare(){};
@Override
public void bake(){};
@Override
public void cut(){};
@Override
public void box(){};
}
- 工厂类
/**
* 创建工厂
* @author utopia
* @date 20200630
*/
public abstract class PizzaFactory {
public Pizza createPizza(String type){
Pizza pizza = null;
if(type.equals("tomato")){
pizza=new TomatoPizza();
}else if(type.equals("salad")){
pizza=new SaladPizza();
}
pizza.prepare();
pizza.bake();
pizza.box();
pizza.cut();
return pizza;
}
}
代码地址:https://github.com/wenutopia/HeadFirst.git
简单工厂模式其实并不是一种设计模式,反而比较像是一种编程习惯,但由于经常被使用,所以把这种编程习惯错误的认为是“工厂模式”