通俗易懂的java设计模式之 --工厂模式

Java中的工厂模式是一种创建对象的设计模式,它提供了一种封装对象创建过程的方式,使得客户端代码无需直接创建对象,而是通过调用工厂方法来获取所需的对象实例。工厂模式可以帮助我们降低代码耦合度,提高代码的可维护性和可扩展性。

下面是一个简单的例子,假设我们有一个披萨店,我们需要生产不同种类的披萨,每种披萨的配料不同,制作方式也不同。我们可以使用工厂模式来创建这些披萨的实例。

首先,我们定义一个披萨接口,该接口定义了披萨的基本属性和行为:

public interface Pizza {
    void prepare();
    void bake();
    void cut();
    void box();
}

然后,我们定义不同种类的披萨类,这些类实现了披萨接口,并实现了自己特有的制作方法和配料:

public class CheesePizza implements Pizza {
    public void prepare() {
        System.out.println("Preparing cheese pizza");
    }
    public void bake() {
        System.out.println("Baking cheese pizza");
    }
    public void cut() {
        System.out.println("Cutting cheese pizza");
    }
    public void box() {
        System.out.println("Boxing cheese pizza");
    }
}

public class PepperoniPizza implements Pizza {
    public void prepare() {
        System.out.println("Preparing pepperoni pizza");
    }
    public void bake() {
        System.out.println("Baking pepperoni pizza");
    }
    public void cut() {
        System.out.println("Cutting pepperoni pizza");
    }
    public void box() {
        System.out.println("Boxing pepperoni pizza");
    }
}

最后,我们定义一个披萨工厂类,该类负责生产不同种类的披萨。客户端代码可以通过调用工厂方法来获取所需的披萨实例:

public class PizzaFactory {
    public Pizza createPizza(String type) {
        if (type.equals("cheese")) {
            return new CheesePizza();
        } else if (type.equals("pepperoni")) {
            return new PepperoniPizza();
        } else {
            throw new IllegalArgumentException("Invalid pizza type: " + type);
        }
    }
}

客户端代码可以通过披萨工厂类来获取不同种类的披萨实例:

public class Client {
    public static void main(String[] args) {
        PizzaFactory factory = new PizzaFactory();

        Pizza cheesePizza = factory.createPizza("cheese");
        cheesePizza.prepare();
        cheesePizza.bake();
        cheesePizza.cut();
        cheesePizza.box();

        Pizza pepperoniPizza = factory.createPizza("pepperoni");
        pepperoniPizza.prepare();
        pepperoniPizza.bake();
        pepperoniPizza.cut();
        pepperoniPizza.box();
    }
}

运行该客户端代码会输出以下结果:

Preparing cheese pizza
Baking cheese pizza
Cutting cheese pizza
Boxing cheese pizza
Preparing pepperoni pizza
Baking pepperoni pizza
Cutting pepperoni pizza
Boxing pepperoni pizza

工厂模式是一种创建对象的设计模式,它将对象的创建过程封装在一个工厂类中,使得客户端代码无需直接创建对象,而是通过调用工厂方法来获取所需的对象实例。工厂模式可以帮助我们降低代码耦合度,提高代码的可维护性和可扩展性。

在工厂模式中,我们通常会定义一个抽象产品接口或者抽象产品类,用于描述所需对象的共同属性和行为。然后,我们定义具体的产品类,这些类实现了抽象产品接口或抽象产品类,并实现了自己特有的行为。最后,我们定义一个工厂类,该类负责生产不同种类的产品。客户端代码可以通过工厂类来获取不同种类的产品实例,而无需知道产品实例的具体创建细节。

工厂模式有多种变种,如简单工厂模式、工厂方法模式和抽象工厂模式等,它们之间的差异在于工厂的创建方式和对象的创建方式有所不同。

总之,工厂模式是一种常用的设计模式,它可以帮助我们编写更加灵活和可扩展的代码。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值