当前位置: 首页 > article >正文

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

文章目录

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

1. 简介

简单工厂模式(Simple Factory Patern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式
在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
在这里插入图片描述

2. 代码

2.1 抽象类:Course.java

public abstract class Course{
    public abstract void make();
}

2.2 产品A:JavaCourse.java

public class JavaCourse extends Course {

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

2.3 产品B:PythonCourse.java

public class PythonCourse extends Course{

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

2.4 工厂:CourseFactory.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

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

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

参考链接(无)


http://www.kler.cn/news/353707.html

相关文章:

  • langchain更新再体验:加入一个prompt
  • 15分钟学Go 第3天:编写第一个Go程序
  • JavaWeb 22.Node.js_简介和安装
  • 卸载Python
  • 120多套各种类别微信小程序模板源码
  • Linux LCD 驱动实验
  • R语言中,.RData 和 .rds 的区别
  • RISC-V笔记——语法依赖
  • SpringMVC后台控制端校验-表单验证深度分析与实战优化
  • 【LeetCode每日一题】——1413.逐步求和得到正数的最小值
  • 【ROS2实操三】动作通信
  • Flume面试整理-常见的Channel类型
  • Nginx配置全解析
  • 【Neo4j】图数据库Neo4j 认证专家考试题目总结(判断/单选/多选),正确率高达99%
  • python爬虫实战案例——从移动端接口抓取微博评论,采用cookie登陆,数据存入excel表格,超详细(15)
  • Python数据分析库pandas高级接口dt的使用
  • PLSQL高级编程-面向对象编程
  • 初始化列表、静态成员、友元
  • Nacos2.3.2在ubuntu中的部署
  • R语言绘图——坐标轴及图例