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

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

参考链接(无)

相关推荐
像我这样帅的人丶你还10 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩10 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia11 小时前
Mybatis的日志输入
java
亦暖筑序12 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户2986985301415 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao16 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿16 小时前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰67517 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly17 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity17 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端