2、工厂方法模式

用来生产同一等级结构中的固定产品(支持增加任意产品)

1、创建工厂方法接口

package com.design.model_02_factory.method;


//工厂方法模式
public interface CarFactory {
    Car getCar();
}

2、创建工厂方法接口的实现类

1、特斯拉工厂类

package com.design.model_02_factory.method;

/**
 * @program: designMode
 * @description: 特斯拉工厂
 * @author: lxf
 * @create: 2021-09-09 13:27
 */
public class TeslaFactory implements CarFactory {

   @Override
    public Car getCar() {
        return (Car) new Tesla();
    }
}

2、五菱宏光

package com.design.model_02_factory.method;

/**
 * @program: designMode
 * @description: 五菱宏光工厂
 * @author: lxf
 * @create: 2021-09-09 13:34
 */

public class WuLingFactory implements CarFactory {


    @Override
    public Car getCar() {
           return (Car) new WuLing();
    }
}

3、消费者

package com.design.model_02_factory.method;

/**
 * @program: designMode
 * @description: 客户
 * @author: lxf
 * @create: 2021-09-09 13:35
 */
public class Consumer {

    public static void main(String[] args) {

        Car car = new WuLingFactory().getCar();
        Car car1 = new TeslaFactory().getCar();
        car.name();
        car1.name();
    }
}

简单工厂模式和工厂方法模式的对比

从结构复杂度:simple

从代码复杂度:simple

从编程复杂度:simple

从管理上的复杂度:simple

根据设计原则:工厂方法模式

根据实际业务:简单工厂模式