JAVA简单工厂模式(从现实生活角度理解代码原理)
作者:潘侯爷 发布时间:2021-10-29 12:39:32
标签:java,工厂模式
简单工厂模式(Simple Factory),说他简单是因为我们可以将此模式比作一个简单的民间作坊,他们只有固定的生产线生产固定的产品。也可以称他为静态工厂设计模式,类似于之前提到过静态代理设计模式,一条生产线生产一种产品(一个代理代理一种业务),为了方便大家理解,我们将KFC比作一个简单的工厂,实现代码如下:
//建造接口(或者抽象类)提供食物生产方法
interface Food{
public abstract void get();
}
//汉堡类(后厨生产线)来实现食物生产方法
class Hamburger implements Food{
public void get(){
System.out.println("汉堡来了");
}
}
//炸鸡类(后厨生产线)来实现食物生产方法
class Chicken implements Food{
public void get(){
System.out.println("炸鸡来了");
}
}
//KFC(静态工厂类)
class KFC{
//提供获取食物的方法(传入的参数name为食客所点食物)
public static Food getFood(String name){
/*如果所点食物是炸鸡/汉堡(见名知义)
*则实例化该生产线(通知对应后厨生产线)
*/
if(name.equals("炸鸡")){
return new Chicken();
}
if(name.equals("汉堡")){
return new Hamburger();
}
return null;
}
}
//测试类
public class Test{
public static void main(String[] args){
KFC kfc = new KFC();//实例化KFC
Food m = kfc.getFood("炸鸡");
Food n = kfc.getFood("hanbao");//输入的字符串不符合工厂类对应值
try{
m.get();
n.get();
//添加异常处理(如果没有对应生产线则提示异常处理结果)
}catch(NullPointerException e){
System.out.print("没有你要的食物");
}
}
}
输出结果:
1 炸鸡来了 2 没有你要的食物
来源:http://www.cnblogs.com/panhouye/p/6102227.html
0
投稿
猜你喜欢
- IOS与网页JS交互随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类
- 使用@Autowired注解有错误提示使用Spring boot +mybatis框架时,在service实现类中使用Mapper类,给Ma
- 本文实例讲述了JAVA设计模式之备忘录模式。分享给大家供大家参考,具体如下:备忘录模式:又叫做快照模式,指在不破坏封装性的前提下,获取到一个
- 创建新的项目的时候,文件名一直追加,不分层对于刚用idea的小白,这个问题困扰了我好几天了,幸好现在还不怎么敲代码,下面给一个详细的解决方案
- SpringBoot2.x过后static下的静态资源无法访问package com.example.thymeleaf.commons;i
- BeanPostProcessor 的接口定义,可以实现提供自己的实例化逻辑,依赖解析逻辑等,也可以以后在Spring容器实例化完毕,配置和
- 本篇介绍在SpringBoot中配置Email服务的具体步骤,以及常见的异常分析。 具体案例以QQ邮箱以及QQ企业邮箱为例。QQ邮箱发送方式
- 主要介绍springboot项目中配置文件的加密前言为了保证服务器相关信息的保密,一般会采用加密的方式进行对配置文件原文的加密,今天介绍下s
- 一、结构型模式结构型模式有什么好处?从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题二、适配器模式USB网线转换器三、
- package com.yao;import java.util.concurrent.ExecutorService;import jav
- 如下所示: /** * 判断某个界面是否在前台 * * @param context
- 二分法查找,顾名思义就是要将数据每次都分成两份然后再去找到你想要的数据,我们可以这样去想,二分法查找很类似与我们平时玩的猜价格游戏,当你报出
- 方法参数public String listFireEvent(@Valid FireSearch fireSearch, Ht
- Eureka注册中心/服务发现框架Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中
- 前两天看了个扫雷的视频,于是自己跟着做了下,感觉还不是很难。初学Java的同学可以尝试自己操作下Java小程序这样子才能提高自己的理解能力和
- 这篇文章主要介绍了JAVA泛型的继承和实现、擦除原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- this:this理解为:当前对象 或 当前正在创建的对象可以调用的结构:属性、方法;构造器this调用属性、方法:先了解一下形参:形参的意
- 最近一个项目中,需要用到Java的websocket新特性,于是就学了一下,感觉这技术还挺好玩的,瞬间知道网页上面的那些在线客服是怎么做的了
- 1、线程的控制很常见,如文件传送到一半时,需要暂停文件传送,或终止文件传送,这实际上就是控制线程的运行。2、线程有创建、可运行、运行中、阻塞
- MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱