1、简单工厂模式
2、抽象工厂模式
-
简单工厂模式:
将需要定制化开发的部分提出,由工厂统一管理,根据请求返回需要的对象。
-
抽象工厂方法
定义一个负责创建一组产品的接口,这个接口内的每一个方法都负责创建一个具体的产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法,所以在抽象工厂中是利用工厂方法来实现生产的方式。
-
抽象工厂示例主要代码
package com.lonewolf.service.factory.abstractfactory;
import com.lonewolf.service.factory.abstractfactory.entity.Pizza;
import com.lonewolf.service.factory.abstractfactory.service.PackPizza;
/**
* @Author: Xiangyong.zeng
* @Date: 2019-08-30 14:33
* @Description:
*/
public class test {
static abstract class PizzaStore {
/**
* [下个披萨订单]
* @author xiangyong.zeng
* @param type
* @return com.lonewolf.service.factory.simplefactory.entity.Pizza
* @date 2019-08-30 11:41
*/
public final Pizza orderPizza(String type){
Pizza pizza;
pizza = createPizza(type);
PackPizza packPizza = new PackPizza();
packPizza.cut(pizza);
packPizza.packagePizza(pizza);
return pizza;
}
/**
* [description]
* @author xiangyong.zeng
* @param type
* @return com.lonewolf.service.factory.simplefactory.entity.Pizza
* @date 2019-08-30 11:41
*/
protected abstract Pizza createPizza(String type);
}
static class CSPizzaStore extends PizzaStore {
// @Autowired
// CSPizzaFactory csPizzaFactory;
@Override
public Pizza createPizza(String type) {
Pizza pizza;
CSPizzaFactory csPizzaFactory = new CSPizzaFactory();
pizza = csPizzaFactory.createPizza(type);
return pizza;
}
}
static class CSPizzaFactory {
public Pizza createPizza(String type){
Pizza pizza = new Pizza();
pizza.setName(type);
System.out.println("createpizza"+type);
return pizza;
}
}
public static void main(String[] args) {
PizzaStore pizzaStore = new CSPizzaStore();
pizzaStore.orderPizza("CSPizza");
}
}
以上对工厂模式的理解有误差的地方烦请支出,谢谢