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

devtools/2024/10/21 22:22:48/

文章目录

  • 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. 代码

java_6">2.1 抽象类:Course.java

java">public abstract class Course{public abstract void make();
}

java_13">2.2 产品A:JavaCourse.java

java">public class JavaCourse extends Course {@Overridepublic void make() {System.out.println("制作java课程");}}

java_25">2.3 产品B:PythonCourse.java

java">public class PythonCourse extends Course{@Overridepublic void make() {System.out.println("制作python课程");}}

java_38">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;}
}

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

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

参考链接(无)


http://www.ppmy.cn/devtools/127666.html

相关文章

《柬埔寨语翻译通》App:技术驱动的语言翻译解决方案,高精度的高棉语OCR识别技术分享

2023年,一款全新的高棉语翻译应用《柬埔寨语翻译通》正式面向公众发布。这款应用不仅支持中文与高棉语的双向翻译,还集成了语音播放、翻译历史自动保存等高级功能,极大地提高了用户的语言学习效率和跨文化交流的便捷性。 核心功能与技术亮点…

物流管理系统设计与实现

摘 要 本物流管理系统是针对目前物流管理系统管理的实际需求,从实际工作出发,对过去的物流管理系统管理系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前jsp…

使用 rbenv 安装 Ruby 2.7.5

如果尚未安装 rbenv,可以使用 Homebrew 安装它: brew install rbenv brew install ruby-build初始化 rbenv: rbenv init在终端中运行以下命令将 rbenv 添加到你的 shell 中: open .bash_profile复制代码到文件中 eval “$(rbenv…

售后管理系统 解锁服务效率与质量双重提升

售后管理系统通过提升响应速度、确保服务一致性、数据分析优化流程,提高企业售后服务质量。ZohoDesk等解决方案可自动化分配工单、多渠道支持、管理追踪工单等,增强客户满意度和忠诚度。 一、什么是售后管理系统 首先,我们需要了解什么是售后…

git版本控制软件,操作方法

git版本库操作 1. 注册用户信息 git config --global (邮箱和用户名) 2. 创建工作区 git init 3. 编写文件 vim readme.txt 4. 把文件放到暂存区 git add readme.txt 5. 查看工作区状态 git status 6. 把文件放到本地版本库里 git commit -m "" filename 7. 查看日志…

OpenCV高级图形用户界面(7)获取指定窗口的属性值函数getWindowProperty()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 提供窗口的参数。 函数 getWindowProperty 返回窗口的属性。 cv::getWindowProperty() 函数用于获取指定窗口的属性值。这个函数允许你查询窗口…

成都睿明智科技有限公司共创抖音电商新篇章

在当今这个数字化浪潮汹涌的时代,抖音电商以其独特的魅力迅速崛起,成为众多商家竞相追逐的新蓝海。在这片充满机遇与挑战的领域中,成都睿明智科技有限公司凭借其专业的服务、创新的策略和敏锐的市场洞察力,成为了众多商家信赖的合…

每日OJ题_牛客_连续子数组最大和_线性dp_C++_Java

目录 牛客_连续子数组最大和_线性dp 题目解析 C代码 Java代码 牛客_连续子数组最大和_线性dp 连续子数组最大和_牛客题霸_牛客网 (nowcoder.com) 描述: 给定一个长度为 n的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数…