yan061

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Java 简单工厂模式

需求:
Pizza 有以下几个方法
prepare() 准备食材
bake() 烘焙
cut() 切割
box() 装盒

现在有两种披萨,第一种是ApplePizza,第二种是CheesePizza。 PizzaStore有点单系统Order(pizzaType) 根据pizza type去制作对应的Pizza。

Pizza的抽象类

public abstract class Pizza {

    String pizzaName = null;

    public abstract void prepare();

    public void bake(){
        System.out.println(pizzaName+" 开始烘焙");
    }

    public void  cut(){
        System.out.println(pizzaName+" 开始切割");
    }

    public void  box(){
        System.out.println(pizzaName+" 开始打包");
    }

}

具体实现类

public class ApplePizza extends Pizza{


    @Override
    public void prepare() {
        System.out.println(pizzaName+" 准备原材料");
    }

    public ApplePizza(){
        pizzaName = "Apple披萨";
    }

}


public class CheesePizza extends Pizza{

    @Override
    public void prepare() {
        System.out.println(pizzaName+" 准备原材料");
    }

    public CheesePizza(){
        pizzaName = "Cheese披萨";
    }
}

工厂类去实例化Pizza类

public class SimplePizzaFactory {

    Pizza pizza=null;

    public Pizza createPizzaInstance(String orderType){

        if (orderType.equalsIgnoreCase("apple")){
            pizza = new ApplePizza();
        }else if (orderType.equalsIgnoreCase("cheese")){
            pizza = new CheesePizza();
        }
        return pizza;
    }

}

order系统把type传递给工厂类

public class OrderPizza {

    public OrderPizza(String orderType){

        SimplePizzaFactory simplePizzaFactory = new SimplePizzaFactory();
        Pizza pizzaInstance = simplePizzaFactory.createPizzaInstance(orderType);

        pizzaInstance.prepare();
        pizzaInstance.bake();
        pizzaInstance.cut();
        pizzaInstance.box();
    }
}

披萨店把用户需求传递给order系统

public class PizzaStore {
    public static void main(String[] args) {
        new OrderPizza("Apple");
        new OrderPizza("Cheese");
    }
}

输出结果

posted on   yan061  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示