Dotcpp  >  编程教程  >  创建型模式(Creational Patterns)  >  工厂模式—简单工厂模式

工厂模式—简单工厂模式

点击打开在线编译器,边学边练

在简单工厂模式中,使用一个工厂类来封装对象的实例化过程。客户端需要什么对象,就向该工厂类提供相应的参数,然后由工厂类创建对象并返回给客户端。

简单工厂模式的优点在于它的实现简单直观,客户端只需要知道需要什么对象,无需关心如何创建对象。缺点是客户端依赖于工厂类,如果需要新增一种产品类型,就需要修改工厂类的代码,违反了开闭原则。

以卖披萨为例,简单工厂模式实现如下:

/*
 * 2.简单工厂方法:希望能够创建一个对象,但创建过程比较复杂,希望对外隐藏这些细节
 */
public class SimpleFactory {
 
    public static Pizza createPizza(String type){
 
        Pizza pizza=null;
        switch (type){
            case "chicken":
                pizza=new ChickenPizza("鸡肉披萨");
                break;
            case "dousha":
                pizza=new DouShaPizza("豆沙披萨");
                break;
            case "pork":
                pizza=new PorkPizza("猪肉披萨");
            case "beef":
                //老板拓展业务了,新加了一个牛肉类型的披萨,那对于简单工厂模式而言,
                //于是就得修改源代码,那么就违反了ocp原则,假如新增100个?
                pizza=new BeefPizza("牛肉披萨");
                break;
            default:
                throw new IllegalArgumentException("Invalid Pizza Type");
        }
 
        return pizza;
    }
}

Test:

  //2.简单工厂模式
    @Test
    void simpleFactory(){
        //以猪肉披萨为例
        pizzapork = SimpleFactory.createPizza("pork");
        pork.prepare();
        pork.make();
        pork.braise();
    }

通过封装SimpleFactory这个类,我们将sale和pizza进行了解耦合。


本文固定URL:https://www.dotcpp.com/course/1356

Dotcpp在线编译      (登录可减少运行等待时间)