• [设计模式] 简单工厂模式简易案例


    工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。
    解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。

    以下是一个简单的工厂模式的 Java 示例,假设你要创建不同类型的形状对象。

    首先,定义一个抽象形状类 Shape:

    public abstract class Shape {
        public abstract void draw();
    }
    
    • 1
    • 2
    • 3

    然后,创建具体的形状类,例如 Circle 和 Rectangle:

    public class Circle extends Shape {
        @Override
        public void draw() {
            System.out.println("绘制圆形");
        }
    }
    
    public class Rectangle extends Shape {
        @Override
        public void draw() {
            System.out.println("绘制矩形");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    接下来,创建一个工厂类 ShapeFactory,它根据给定的条件或参数来创建不同类型的形状对象:

    public class ShapeFactory {
        // 根据类型参数创建相应的形状对象
        public Shape createShape(String type) {
            if (type.equalsIgnoreCase("circle")) {
                return new Circle();
            } else if (type.equalsIgnoreCase("rectangle")) {
                return new Rectangle();
            } else {
                return null; // 可以根据需要返回默认对象或抛出异常
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    最后,你可以使用工厂类来创建不同类型的形状对象:

    public class Main {
        public static void main(String[] args) {
            ShapeFactory factory = new ShapeFactory();
    
            // 创建圆形对象
            Shape circle = factory.createShape("circle");
            circle.draw(); // 输出:绘制圆形
    
            // 创建矩形对象
            Shape rectangle = factory.createShape("rectangle");
            rectangle.draw(); // 输出:绘制矩形
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这个示例演示了一个简单的工厂模式,根据输入的类型参数创建不同的形状对象。工厂模式的主要好处是将对象的创建和使用分离,使代码更易于扩展和维护。如果需要添加新的形状类型,只需修改工厂类而不必修改使用该形状的代码。

  • 相关阅读:
    Spring循环依赖和三级缓存详解
    黑盒测试和白盒测试的概念和区别你知道吗?
    2022年的暑假
    DOPE修饰岩藻多糖 Fucoidan-DOPE 岩藻多糖-二油酰基磷脂酰乙醇胺
    【ES6】js 中class的extends、super关键字用法和避坑点
    Elasticsearch之索引简单应用
    Java并发编程: Thread常见方法
    Android 11.0 系统Settings去掉开发者模式功能
    React组件通信方式总结
    Win10电脑需要安装杀毒软件吗?
  • 原文地址:https://blog.csdn.net/wpw5499/article/details/132724447