除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. 心得

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

参考链接(无)

相关推荐
武子康7 分钟前
Java-197 消息队列应用场景:缓存预热+限流排队+Redis Lua 扣库存+MQ 削峰填谷
java·redis·缓存·性能优化·消息队列·rabbitmq·java-rabbitmq
全靠bug跑8 分钟前
Spring Cloud Gateway 实战:统一鉴权与用户信息全链路透传
java·开发语言·gateway·拦截器
述清-架构师之路1 小时前
【亲测可用】idea设置mvn默认版本路径,setting路径,仓库路径
java·ide·intellij-idea
泡泡以安3 小时前
【Android逆向工程】第3章:Java 字节码与 Smali 语法基础
android·java·安卓逆向
毕设源码-朱学姐8 小时前
【开题答辩全过程】以 工厂能耗分析平台的设计与实现为例,包含答辩的问题和答案
java·vue.js
Spring AI学习10 小时前
Spring AI深度解析(9/50):可观测性与监控体系实战
java·人工智能·spring
java1234_小锋11 小时前
Spring IoC的实现机制是什么?
java·后端·spring
xqqxqxxq11 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
消失的旧时光-194311 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
哈哈老师啊12 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot