Java 设计模式之工厂模式(Factory)

本文详细介绍了Java中的三种工厂模式:简单工厂、工厂方法和抽象工厂。简单工厂模式通过封装创建对象的代码,避免在核心类中使用if-else。工厂方法模式则将对象的创建延迟到子类,遵循开闭原则,更加解耦。抽象工厂模式关注多维度的产品家族,创建一系列相关或相互依赖的对象。所有工厂模式的核心都是封装对象创建,减少对具体类的依赖。
摘要由CSDN通过智能技术生成

一、简单工厂

简单工厂是一种编程习惯,把变化的代码(new 对象)封装在一个工厂里

用户需求:客户想要在pizza店orderPizza

需求分析:

  • 首先只有1个pizza店,有不同种类的pizza,不同客户order不同种类的pizza
  • 如果在pizza店的类里用 if else 编码,一旦有新种类就需要改pizza店的代码
  • 这里新建一个对象,封装创建pizza对象的部分,这个对象称之为工厂。这样一来,再有新类型的pizza,只要修改工厂即可,pizza店不关注pizza的具体生产过程
  • 简单工厂是一个工厂根据不同参数生产出不同的产品(所需对象),一个工厂类对应多个不同的产品类

类图设计

  • 工厂的客户:PizzaStore,要购买预定各种各样的pizza
  • 创建Pizza的简单工厂:SimplePizzaFactory,唯一用到具体pizza类的地方
  • 工厂的产品:Pizza,定义为抽象类
  • 工厂的具体产品:CheesePizza,ClamPizza等

代码示例

PizzaStore代码

package Factory.SimpleFactory;

public class PizzaStore {
    SimplePizzaFactory factory;

    public PizzaStore(SimplePizzaFactory factory) {
        this.factory = factory;
    }

    public Pizza orderPizza(String type) {
        Pizza pizza;
        pizza = factory.createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }
}

SimplerPizzaFactory代码

package Factory.SimpleFactory;

public class SimplePizzaFactory {
    public Pizza createPizza(String type) {
        Pizza pizza = null;
        switch (type) {
            case "cheese":
                pizza = new CheesePizza();
                break;
            case "clam":
                pizza = new ClamPizza();
                break;
            case "veggie":
                pizza = new VeggiePizza();
                break;
            default:
                break;
        }
        return pizza;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值