简单工厂模式--java代码实现
简单工厂模式
工厂,生产产品的场所。比如农夫山泉工厂,生产农夫山泉矿泉水、茶π等饮料。矿泉水和茶π都属于饮料,都具有解渴的功能,但是每种饮料给人的感觉是不一样的。矿泉水和茶π在Java中相当于子类,饮料相当于父类。
简单工厂模式,又叫静态工厂模式,在Java中专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。我们将水果园比作一个工厂,可以生产苹果,香蕉等水果。每一个苹果或香蕉都是一个实例,他们的父类都是水果。
下面用Java语言实现简单工厂模式
1.简单工厂模式示意图
2.创建Fruit接口、Apple类和Banana类
Fruit(interface):
- //水果类
- public interface Fruit {
- public void get();
- }
Apple类:
- //苹果类
- public class Apple implements Fruit{
- //实现并重写父类的get()方法
- public void get() {
- System.out.println("采集苹果");
- }
- }
Banana类:
- //香蕉类
- public class Banana implements Fruit{
- //实现并重写父类的get()方法
- public void get() {
- System.out.println("采集香蕉");
- }
- }
3.创建水果园,即工厂类,来生产各种水果
FruitFactory:
注意:这里将工厂类和所创建的子类放在同一个包中,方便调用。
- package simpleFactory;
- //水果园,水果工厂类
- public class FruitFactory {
- /**
- * @param 不同水果的类名称
- * @return 水果类
- */
- public static Fruit getFruit(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
- /*这里通过反射的方式获取到水果子类的字节码,即类对象,通过类对象的newInstance()方法创建水果子类
- 实例*/
- Class fruit = Class.forName(FruitFactory.class.getPackage().getName()+"."+type);
- return (Fruit) fruit.newInstance();
- }
- }
4.现在开始生产水果,创建实例,我们另外建立一个类
MainClass:
- package simpleFactory;
- public class MainClass {
- public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
- //通过调用工厂类的静态方法getFruit,创建水果的子类实例。
- Fruit apple = FruitFactory.getFruit("Apple");
- Fruit banana = FruitFactory.getFruit("Banana");
- apple.get();
- banana.get();
- }
- }
5.结果:
6.总结:
模式来源于生活,简单工厂模式,是一种比较容易理解模式,这种模式在很多框架中都有应用,比如Spring框架中创建实例时,Mybatis中的SqlSessionFactory等。这里通过生活中简单实例,实现简单工厂模式。
参考B站视频https://www.bilibili.com/video/av34162848。
简单工厂模式--java代码实现的更多相关文章
- 简单工厂模式-Java篇
简单工厂模式就是考虑如何实例化对象的问题,就是说到底要实例化谁,将来会不会增加实例化对象,比如计算器类中增加开根元素,应该考虑用一个单独的类来创造实例的过程,这就是工厂.下面将利用计算器类举例,解释简 ...
- SimpleFactoryPattern(简单工厂模式)-----Java/.Net
工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式.本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式,但在软件开发中却也应 ...
- 抽象工厂模式--java代码实现
抽象工厂模式 抽象工厂模式,对方法工厂模式进行抽象.世界各地都有自己的水果园,我们将这些水果园抽象为一个水果园接口,在中国.英国和美国都有水果园,种植不同的水果,比如苹果.香蕉和梨等.这里将苹果进行抽 ...
- (1)java设计模式之简单工厂模式
一:简单工厂模式的优点 --->在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Fa ...
- JAVA基础——设计模式之简单工厂模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...
- 设计模式之简单工厂模式(Simple Factory Pattern)
一.简单工厂模式的由来 所有设计模式都是为解决某类问题而产生的,那么简单工厂模式是为解决什么问题呢?我们假设有以下业务场景: 在一个学生选课系统中,文科生用户选课时,我们要获得文科生的所有课程列表:理 ...
- iOS 简单工厂模式
iOS 简单工厂模式 什么是简单工厂模式? 简单工厂模式中定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体的操作.工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传 ...
- 创建型模式(过渡模式) 简单工厂模式(Simple Factory)
简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern) 是通过专门定义一个类来负责创建其他类的 ...
- PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式
1.单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例.即一个类只有一个对象实例. 要实现每一个类只有一个实例,就需 ...
随机推荐
- Roundcube 1.2.2 - Remote Code Execution
本文简要记述一下Roundcube 1.2.2远程代码执行漏洞的复现过程. 漏洞利用条件 Roundcube必须配置成使用PHP的mail()函数(如果没有指定SMTP,则是默认开启) PHP的mai ...
- es6(一):es6介绍以及let,const
es是js的规范,而js是具体实现 将es6转化为es5代码工具:运用的多的是babel 在线转换地址:babel,traceur(属于谷歌) 1.let申明变量:let其实可以完全取代var,并 ...
- JDK AtomicInteger 源码分析
@(JDK)[AtomicInteger] JDK AtomicInteger 源码分析 Unsafe 实例化 Unsafe在创建实例的时候,不能仅仅通过new Unsafe()或者Unsafe.ge ...
- 专业、稳定的微信域名被封检测API平台!
裂变程序最佳配套api,实时检测域名在微信中是否被封,防止见红 还在手动测试域名在微信是否可用?你OUT了! API文档:最简单的GET接口调用方式 API响应:毫秒级响应效率,100%准确率 AP ...
- Unity pdb2mdb错误
错误: D:\sandbox\sandbox_art\sandbox_artprj\Assets\Plugins\Sandbox\Editor>"C:\ProgramFiles/Uni ...
- 有终将被编程潮流淹没的程序员,那是因为没学python人工智能吧?
2017年被称为中国人工智能元年--在两会时期,人工智能曾经成为国度计策,同时被写进当局报告.在从前的一年里,人工智能获得注重,已逐步浸透到别的行业,无人超市.主动驾驶.人脸识别.智能家居等" ...
- TensorFlow图像处理API
TensorFlow提供了一些常用的图像处理接口,可以让我们方便的对图像数据进行操作,以下首先给出一段显示原始图片的代码,然后在此基础上,实践TensorFlow的不同API. 显示原始图片 impo ...
- 并查集(union-find set)与Kruskal算法
并查集 并查集处理的是集合之间的关系,即‘union' , 'find' .在这种数据类型中,N个不同元素被分成若干个组,每组是一个集合,这种集合叫做分离集合.并查集支持查找一个元素所属的集合和两个元 ...
- PAT1004:Counting Leaves
1004. Counting Leaves (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A fam ...
- 对于Javascript 执行上下文的理解
转载无源头地址 在这篇文章中,将比较深入地阐述下执行上下文 – JavaScript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么 ...