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

news/2024/10/21 19:57:23/

文章目录

  • 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/news/1540883.html

相关文章

青少年编程能力等级测评CPA C++五级试卷(1)

青少年编程能力等级测评CPA C五级试卷(1) 一、单项选择题(共15题,每题3分,共45分) CP5_1_1.下列有关类的重用意义的叙述中,不正确的是( )。 A&#x…

C# 中实现安全集合Concurrent 支持删除指定元素的

ConcurrentBag实现了IProducerConsumerCollection接口,该接口主要用于生产者消费者模式下,可见该类基本就是为生产消费者模式定制的。然后还实现了常规的IReadOnlyCollection类,实现了该类就需要实现IEnumerable、IEnumerable、 ICollection类…

神经网络反向传播交叉熵 计算损失函数对隐藏层激活值a1的梯度

本文是交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式中的一个公式,单独拿出来做一下解释说明。 公式 8-16 是反向传播算法中,用于计算损失函数对隐藏层激活值 a 1 a_1 a1​ 的梯度。在反向传播过程中,损失函数对隐藏层激活…

基于MinIO配置bucket,用于文件下载和浏览

文章目录 引言I 配置文件浏览安装MinIO配置自启动服务访问权限配置文件浏览访问地址文件下载地址II 知识扩展MinIO内置访问策略只读策略只写策略读写策略diagnosticsconsoleAdmin引言 需求:文件下载用于OTA升级,文件浏览用于产品展示。 实现方案:基于MinIO配置bucket访问权…

Android Automotive 获得谷歌地图事故报告功能

Android Automotive 迎来了谷歌地图的实时事故报告功能,这一更新标志着它与 Android Auto 的功能差距进一步缩小。 Android Auto 主要是通过手机与汽车的连接来提供服务,而Android Automotive 则是为汽车量身定制的系统——这在软件更新和用户体验上带来…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十四集:制作新的场景以及制作创建切换管理系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作新的场景 1.重新翻新各种Sprite2.制作地图前期应该做的事情3.疯狂的制作地图二、制作场景切换管理系统 1.制作场景切换点TransitionPoint2.切换场景时的…

Android Framework AMS(08)service组件分析-2(startService和StopService关键流程分析)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:上一章节主要解读应用层service组件启动的2种方式startService和bindService,以及从APP层到AMS调用之间的打通。本章节主要关注service…

深入解析缓存与数据库数据不一致问题

缓存层是提高系统响应速度和扩展性的关键组件。然而,缓存层的引入也带来了数据一致性的挑战。 当数据库中的数据发生变化时,如何确保这些变化能够及时且准确地反映到缓存中,是确保用户体验和系统可靠性的重要问题。 1. 数据一致性 首先&am…