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

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

参考链接(无)

相关推荐
Code哈哈笑17 分钟前
【Java 学习】初识类和对象、this引用
java·学习·microsoft
forestsea23 分钟前
Spring Boot 与 Java 决策树:构建智能分类系统
java·人工智能·spring boot·深度学习·决策树·机器学习·数据挖掘
hxj..32 分钟前
【设计模式】代理模式
java·设计模式·代理模式·动态代理
zpz200132 分钟前
Jenkins的环境部署
java·运维·jenkins
程序猿小D39 分钟前
第三百三十节 Java网络教程 - Java网络UDP服务器
java·开发语言·网络·网络协议·udp·多线程
极客先躯1 小时前
高级java每日一道面试题-2024年11月18日-基本篇-Java创建对象有几种方法?
java·new 关键字·使用克隆·使用反序列化·使用工厂模式·使用构建者模式·使用依赖注入
LRcoding1 小时前
【Spring Boot】# 使用@Scheduled注解无法执行定时任务
java·spring boot·后端
十五年专注C++开发1 小时前
C++不完整类型(Incomplete Type)的检测与避免
开发语言·c++·算法·设计模式
《源码好优多》3 小时前
基于Java Springboot出租车管理网站
java·开发语言·spring boot
·云扬·7 小时前
Java IO 与 BIO、NIO、AIO 详解
java·开发语言·笔记·学习·nio·1024程序员节