超级简单理解工厂模式

1. 简单工厂模式(静态工厂)

1.1 原理简单解析

我们先看一下原理图,我们就已汽车的工厂为例子,看不懂没关系,我们结合代码来进行理解

1.2 代码实现

先定义一个简单的Car接口

public interface Car {
	//汽车品牌的方法
    void brand();
}

定义两个汽车实现类

public class DaZhong implements Car{
    @Override
    public void brand() {
        System.out.println("大众汽车");
    }
}
public class WuLing implements Car {
    @Override
    public void brand() {
        System.out.println("五菱神车");
    }
}

让我们建造一个汽车工厂

public class CarFactory {
    
    public Car getCar(String brand){
        if("五菱神车".equals(brand)){
            return new WuLing();
        }
        if("大众汽车".equals(brand)){
            return new DaZhong();
        }else
            return null;
    }
}

好了,代码准备都有了,我们进行原理解析吧~

public class Customer {
    public static void main(String[] args) {
        
        //不适用工厂方式的时候,我们这样直接new对象
        Car car = new DaZhong();
        Car car1 = new WuLing();
        car.brand();//结果打印 大众汽车
        car1.brand();//结果打印 五菱神车
        
        //我们借助简单工厂模式,那么便可以这样做
        Car car2 = CarFactory.getCar("大众汽车");
        Car car3 = CarFactory.getCar("五菱神车");
        //区别于new的方式,工厂帮我们解决了创建对象的问题
        //我们只需要传递参数,而不需要关注创建过程
    }
}

简单工厂模式局限 :假如我们增加一个新的车,那么必须对CarFactory的代码进行修改,不满足开闭原则,下面的工厂方法模式,将对这种不足进行解决。

2. 工厂方法模式

2.1 简单原理图

同样我们还是先将原理图放在这,结合代码理解原理

2.2 代码实现

我们需用需用1.2节中,Car接口,Wuling实现类和DaZhong实现类
我们需要新添加汽车工厂接口,DaZhong和Wuling工厂的实现类

public interface CarFactory {
    Car getCar();
}
public class WuLingFactory implements CarFactory {
    @Override
    public Car getCar() {
        return  new WuLing();
    }
}
public class DaZhongFactory implements CarFactory {
    @Override
    public Car getCar() {
        return new DaZhong();
    }
}

下面我们进行解析

public class Customer {
    public static void main(String[] args) {

        //我们想要得到想要的车,我们就去找对应的汽车工厂实现类
        //而简单工厂模式,是去找统一的Factory去获得汽车

        //得到大众汽车
        Car car = new DaZhongFactory().getCar();
        //得到五菱神车
        Car car1 = new WuLingFactory().getCar();


    }
}

总结 :工厂方法模式能够在增加新的汽车的时候不去改变核心的代码,只需添加对应的汽车的工厂。虽然这样满足了开闭原则,但是这让代码量大大增加,维护成本变高,在日常开发中,简单工厂模式仍然是用的比较多。
在这里插入图片描述在这里插入图片描述

原创文章 34 获赞 8 访问量 1163

猜你喜欢

转载自blog.csdn.net/qq_46225886/article/details/105481178