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

工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。

解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。

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

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

java 复制代码
public abstract class Shape {
    public abstract void draw();
}

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

java 复制代码
public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

public class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

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

java 复制代码
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; // 可以根据需要返回默认对象或抛出异常
        }
    }
}

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

java 复制代码
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(); // 输出:绘制矩形
    }
}

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

相关推荐
Wang's Blog4 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
\光辉岁月/6 小时前
5.java-数组
java·开发语言
谢亮_vipxieliang6 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
郑州光合科技余经理6 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_962071576 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
code2cat6 小时前
Java进阶篇之AtomicReference:一次替换引用,读到一份完整状态
java·并发编程·不可变对象·atomicreference
专业程序开发源6 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
Wang's Blog6 小时前
Java 项目实战: 外卖平台优化-前后端分离开发模式与工程拆分
java·开发语言
HEJOO97 小时前
指针的算术运算详解
java·数据结构·算法
sunshine22 girl7 小时前
Java学习六 Java常见API-2--String-3-字符串的截取替换和其他方法
java·开发语言·学习