正文
abstract class BaseFactory{
abstract void createPizza(String pizzaType);
}
class ChinaPizzaFactory extends BaseFactory{
@Override
void createPizza(String pizzaType) {
if("cream".endsWith(pizzaType)){
System.out.println("制作中国奶油披萨");
}else {
System.out.println("制作不了");
}
}
}
class FrancePizzaFactory extends BaseFactory{
@Override
void createPizza(String pizzaType) {
if("cream".endsWith(pizzaType)){
System.out.println("制作法国奶油披萨");
}else {
System.out.println("法国制作不了");
}
}
}
public class SimpleFactoryDemo {
public static void main(String[] args) {
ChinaPizzaFactory chinaFactory = new ChinaPizzaFactory();
chinaFactory.createPizza("cream");
}
}
抽象工厂方法
-
定义一个interface用于创建相关或有依赖关系的对象
-
可以将简单工厂模式和工厂方法模式进行整合
-
从设计层面看, 抽象工厂模式就是对简单工厂模式的进一步抽象
-
将工厂抽象成两层, 抽象工厂和具体实现的工厂子类, 可以根据要创建的对象类型使用对应的工厂子类, 有利于代码的维护和扩展
// 定义一个抽象工厂模型的抽象接口
interface AbsFactory{
//让子类实现
public void createPizza(String pizzaType);
}
class ChinaFactory implements AbsFactory{
@Override
public void createPizza(String pizzaType) {
if("creem".endsWith(pizzaType)){
System.out.println("制作中国奶油披萨");
}else {
System.out.println("做不了");
}
}
}
class FranceFactory implements AbsFactory{
@Override
public void createPizza(String pizzaType) {
if("creem".endsWith(pizzaType)){
System.out.println("制作法国奶油披萨");
}else {
System.out.println("做不了");
}
}
}
总结