除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号14 分钟前
【第四节】C++设计模式(创建型模式)-Builder(建造者)模式
c++·设计模式·建造者模式
Nita.18 分钟前
设计模式| 观察者模式 Observer Pattern详解
观察者模式·设计模式·c#
粉032126 分钟前
Keeppalived 实现Nginx 的高可用集群
java·服务器·nginx
路在脚下@43 分钟前
Java使用Redisson实现布隆过滤器
java·spring boot
魔道不误砍柴功1 小时前
Java中的Stream API:从入门到实战
java·windows·python
晚安7201 小时前
idea添加web工程
java·前端·intellij-idea
xinghuitunan1 小时前
时间转换(acwing)c/c++/java/python
java·c语言·c++·python
八月五1 小时前
Java并发编程——ThreadLocal
java·并发编程
多敲代码防脱发2 小时前
Spring框架基本使用(Maven详解)
java·网络·后端·spring·maven