一、浅谈设计模式

设计模式是我们在软件开发过程中遇到问题的一种解决方案,在项目中合理的使用不同的设计模式,可能会很好的解决我们所遇到的问题。设计模式可以使代码在编写上更加容易,保证了代码的可靠性,提高了代码的可拓展性,使代码的可读性增强。

Java中共有 23 种设计模式,这些设计模式可以分为三大类,分别是:创建型模式 (Creational Patterns)、结构型模式 (Structural Patterns)、行为型模式 (Behavioral Patterns)

二、工厂模式

今天,我们要谈论的工厂模式,属于三大分类中的 创建型模式( Creational Patterns )

那么,什么是创建型模式?

创建型模式,提供了一种在创建对象的同时,隐藏创建逻辑的方式,不使用 new 运算符直接实例化对象。这样就会使得程序在创建对象变量时更加灵活~

工厂模式,提供了一种创建对象的最佳方式,是 Java 中最常用的设计模式之一。在工厂模式中,我们并不会对客户暴露创建逻辑,而是使用一个共同的接口来指向新创建的对象。

注意:复杂对象适合使用工厂模式,而简单的对象只需要使用 new 就可以完成对象的创建,使用工厂模式,需要引入一个工厂类去 "生产" 对象

三、应用实例

假如我们家里需要买一辆汽车,如果没有代理商的情况下,我们需要去汽车加工厂,告知工厂我们需要一辆什么类型的汽车,由工厂来加工,并最后交付给我们这个类型的汽车的实例。在这个过程中,我们并不知道汽车加工的工序是什么,只是告知工厂,我需要汽车这个实例,工厂听到后,负责加工完成我的需求,并交付给我。

代码模型图


Java单例工厂模式结合 java设计模式之工厂模式_java

 代码实现

1. 创建接口

public interface InterfaceCar {
    String createCar(String type);
}

2. 创建类来实现这个接口

RedFalg类

public class RedFlag implements InterfaceCar{
    @Override
    public String createCar(String type) {
        return "成功生产出一辆红旗" + type + "!";
    }
}

BiYa类

public class BiYa implements InterfaceCar{
    @Override
    public String createCar(String type) {
        return "成功生产出一辆比亚迪" + type + "!";
    }
}

HuaWei类

public class HuaWei implements InterfaceCar{
    @Override
    public String createCar(String type) {
        return "成功生产出一辆华为" + type + "!";
    }
}

3. 创建工厂,开始 "生产汽车" 实例

public class CarFactory {
    public InterfaceCar getCarInstance(String name) {
        switch (name) {
            case "红旗":
                System.out.println("这里是工厂,正在制造红旗汽车!");
                return new RedFlag();
            case "比亚迪":
                System.out.println("这里是工厂,正在制造比亚迪汽车!");
                return new BiYa();
            case "华为":
                System.out.println("这里是工厂,正在制造华为汽车!");
                return new HuaWei();
            default:
                System.out.println("这里是工厂,没有此品牌的汽车~");
                return null;
        }
    }
}

4. 调用工厂,创建汽车实例

public class Test {
    public static void main(String[] args) {
        InterfaceCar interfaceCar;
        CarFactory carFactory = new CarFactory();

        interfaceCar = carFactory.getCarInstance("红旗");
        System.out.println(interfaceCar.createCar("轿车"));
        System.out.println("===================");

        interfaceCar = carFactory.getCarInstance("华为");
        System.out.println(interfaceCar.createCar("新能源汽车"));
        System.out.println("===================");

        interfaceCar = carFactory.getCarInstance("比亚迪");
        System.out.println(interfaceCar.createCar("越野车"));
        System.out.println("===================");

        carFactory.getCarInstance("奥迪");
    }
}

测试结果

Java单例工厂模式结合 java设计模式之工厂模式_开发语言_02