除GOF23种设计模式之简单工厂模式

文章目录

  • [1. 简介](#1. 简介)
  • [2. 代码](#2. 代码)
    • [2.1 抽象类:Course.java](#2.1 抽象类:Course.java)
    • [2.2 产品A:JavaCourse.java](#2.2 产品A:JavaCourse.java)
    • [2.3 产品B:PythonCourse.java](#2.3 产品B:PythonCourse.java)
    • [2.4 工厂:CourseFactory.java](#2.4 工厂:CourseFactory.java)
    • [2.5 测试:Test.java](#2.5 测试:Test.java)
  • [3. 心得](#3. 心得)
  • 参考链接(无)

1. 简介

简单工厂模式 (Simple Factory Patern):又称为静态工厂方法 (Static Factory Method)模式,它属于类创建型模式

在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

2. 代码

2.1 抽象类:Course.java

java 复制代码
public abstract class Course{
    public abstract void make();
}

2.2 产品A:JavaCourse.java

java 复制代码
public class JavaCourse extends Course {

    @Override
    public void make() {
        System.out.println("制作java课程");
    }
    
}

2.3 产品B:PythonCourse.java

java 复制代码
public class PythonCourse extends Course{

    @Override
    public void make() {
        System.out.println("制作python课程");
    }
    
}

2.4 工厂:CourseFactory.java

java 复制代码
public class CourseFactory {
    public Course getCourse(String name) {
        if ("java".equalsIgnoreCase(name)) {
            return new JavaCourse();
        } else if ("python".equalsIgnoreCase(name)) {
            return new PythonCourse();
        }
        return null;
    }
}

2.5 测试:Test.java

java 复制代码
public class Test {
    public static void main(String[] args) {
        CourseFactory courseFactory = new CourseFactory();
        Course javaCourse =  courseFactory.getCourse("java");
        javaCourse.make();
        Course pyCourse = courseFactory.getCourse("python");
        pyCourse.make();
    }
}

运行结果

复制代码
制作java课程
制作python课程

3. 心得

其实就是通过一个抽象类,多个实现,利用工厂将其整合在一起,这个很简单。比如:我们要做一个计算器,一个含有计算方式的抽象类,四个加减乘除,随后计算器整合起来

参考链接(无)

相关推荐
wljt2 小时前
公司二-面试题
java·开发语言·mybatis
AI备案指南-满满2 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
秋天的怀念_David3 小时前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
高晶3 小时前
SPMI 控制器 RTL 设计与验证新手入门
设计模式·程序员·架构
吴名氏.3 小时前
Java转AI Agent教程(第五周)Prompt工程
java·人工智能·prompt·ai agent
8Qi83 小时前
DDD架构演进
java·分布式·mvc·ddd
paopaokaka_luck3 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
SL_staff3 小时前
HR系统对接钉钉考勤总失败?根源在于缺乏业务语义级逻辑中枢
java·开源·全栈
程序边界3 小时前
一台数据集成软件的拆解笔记(下):一致性、容错、跑批与迁移,KFS 真正难的地方在这
java·前端·笔记
揣一尾游鱼yu4 小时前
内部类和Object笔记
java·开发语言·object·内部类