• 设计模式:工厂方法模式


    工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但将具体的对象创建延迟到子类中进行。这样可以使一个类的实例化延迟到其子类中,从而实现了对对象的创建过程的解耦。
    在工厂方法模式中,有四个主要角色:

    1. 产品(Product):定义了工厂方法创建的对象的接口。
    2. 具体产品(Concrete Product):实现了产品接口的具体类。
    3. 工厂(Factory):定义了创建产品对象的抽象方法,由子类实现具体的创建逻辑。
    4. 具体工厂(Concrete Factory):实现了工厂接口,负责创建具体产品的实例。

    代码实现

    interface Product {
        void operation();
    }
    // 具体产品A
    class ConcreteProductA implements Product {
        @Override
        public void operation() {
            System.out.println("ConcreteProductA operation");
        }
    }
    // 具体产品B
    class ConcreteProductB implements Product {
        @Override
        public void operation() {
            System.out.println("ConcreteProductB operation");
        }
    }
    // 工厂接口
    interface Factory {
        Product createProduct();
    }
    // 具体工厂A
    class ConcreteFactoryA implements Factory {
        @Override
        public Product createProduct() {
            return new ConcreteProductA();
        }
    }
    // 具体工厂B
    class ConcreteFactoryB implements Factory {
        @Override
        public Product createProduct() {
            return new ConcreteProductB();
        }
    }
    // 示例用法
    public class Main {
        public static void main(String[] args) {
            Factory factoryA = new ConcreteFactoryA();
            Product productA = factoryA.createProduct();
            productA.operation(); // 输出:ConcreteProductA operation
            
            Factory factoryB = new ConcreteFactoryB();
            Product productB = factoryB.createProduct();
            productB.operation(); // 输出:ConcreteProductB operation
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    总结

    工厂方法模式的优点包括:

    1. 降低了代码的耦合性:客户端只需要依赖于产品的抽象接口和工厂接口,无需关心具体产品的实现细节。
    2. 增加了系统的可扩展性:当需要添加新产品时,只需要创建对应的具体产品类和具体工厂类即可,无需修改现有代码。
    3. 符合开闭原则:对扩展开放,对修改关闭。

    工厂方法模式的缺点包括:

    1. 增加了系统的复杂度:引入了新的工厂接口和具体工厂类,增加了系统的抽象性和理解难度。
    2. 每增加一个产品,就需要创建一个对应的具体产品类和具体工厂类,增加了系统的代码量。
      总结来说,工厂方法模式适用于需要创建的对象较多且需要灵活扩展的场景,它提供了一种统一的对象创建方式,并且符合面向对象的设计原则。
  • 相关阅读:
    【无标题】
    18、优化网站性能
    Java通过File获取Class字节码并构造Class对象
    企业多点组网最直接、最简单的方案是什么?
    【好文鉴赏】面试官说你回答的不够深入,怎么办?
    http协议的缓存机制
    【APM】在Kubernetes中,使用Helm安装Grafana 9.5.1
    Vue组件自定义事件父子
    Nuxt - [高效简洁] 路由不存在时,跳转到自己定制的 404.vue 页面(当路由不存在时自动重定向到自定义的 404 组件)路由配置的解决方案
    Android 布局优化,看过来 ~
  • 原文地址:https://blog.csdn.net/qq_27586963/article/details/132840611