1. 设计模式之简单工厂模式:是个人都会的设计模式

1.1. 介绍

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。

工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。

通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。

工厂模式会有变种升级,当多个工厂创建对象,都有公用逻辑和个性化逻辑时,可以进一步优化,使用模版模式进一步抽象,称为 工厂方法模式(模板模式+简单工厂模式)。这里有个了解,不通过代码实现来举例了。

应用实例

在企业开发中,一般很少自己实现工厂模式,因为使用 spring,spring 容器本质上就是大的工厂,spring 通过 xml 或者 注解创建各种实例类,然后项目中从容器中获取实例来使用。

优缺点及建议

优点
1.调用者只需要知道对象的名称即可创建对象。
2.扩展性高,如果需要增加新产品,只需扩展一个工厂类即可。
3.屏蔽了产品的具体实现,调用者只关心产品的接口。

缺点
1.每次增加一个产品时,都需要增加一个具体类和对应的工厂,使系统中类的数量成倍增加,增加了系统的复杂度和具体类的依赖。

注意事项
1.工厂模式适用于生成复杂对象的场景。如果对象较为简单,通过 new 即可完成创建,则不必使用工厂模式。使用工厂模式会引入一个工厂类,增加系统复杂度。

1.2. 实现及相关代码

假设某业务需要频繁的创建新的对象

1.2.1. 没使用设计模式方式

接口及数据对象

public interface Product {
    void execute();
}

public static class ProductImpl1 implements Product {
    public void execute() {
        System.out.print("产品1的功能实现");
    }
}

public static class ProductImpl2 implements Product {
    public void execute() {
        System.out.print("产品2的功能实现");
    }
}

调用方法

public static void main(String[] args) {
//    Product product = new ProductImpl1();
//    product.execute();
    Product product = new ProductImpl2();
    product.execute();
}

可能会遇到的问题

如果你直接面向一个类来编程,new来创建类的实例的话,假如有 100 个地方。突然对象实现要更改,需要使用新的类实现名字。

去一个个找原来的名字并更改是很麻烦的,而且代码不容易维护,扩展性很差。

1.2.2. 使用设计模式方式

使用工厂模式,可以把创建对象的逻辑都封装到工厂中,其他地方统一从工厂中获取对象实例。当需要更改新的实现类的时候,只需要调整工厂创建实例实现即可。

接口及数据对象

public interface Product {
    void execute();
}

public static class ProductImpl1 implements Product {
    public void execute() {
        System.out.print("产品1的功能实现");
    }
}

public static class ProductImpl2 implements Product {
    public void execute() {
        System.out.print("产品2的功能实现");
    }
}

public static class ProductFactory {
    public static Product create() {
//        return new ProductImpl1();
        return new ProductImpl2();
    }
}

调用方法

public static void main(String[] args) {
    Product product = ProductFactory.create();
    product.execute();
}

results matching ""

    No results matching ""