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


猜你喜欢
- 1、JDBCJDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开发那么一定是离不开 数据库 的,不管你搞的是什么,只要是想
- 环境:eclipse + spring mvc + maven1、直接看图,把数据库的配置单独拿出来放在了resources_env目录下,
- Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)用户线程即运行在前台的线程,而守护线程是运行
- 对于Android开发者来说虽然使用了可以自动管理内存的Java语言,但是对于内存管理不当,可能你的应用不断出现类似INFO/dalvikv
- 背景项目中用到了多数据源,不同的数据源根据业务不同配置在不同的工程中,由maven来统一聚合。但是前几天在开发过程中突然发现项目前台工程的事
- 目录Java反射超详解1.反射基础1.1Class类1.2类加载2.反射的使用2.1Class对象的获取 2.2Construct
- 实验目的:分别使用sqlite3工具和Android代码的方式建立SQLite数据库。在完成建立数据库的工作后,编程实现基本的数据库操作功能
- 本文重在实现理解,过滤器,业务,逻辑需求,样式请无视。。项目结构如下1.idea新建Spring boot项目,在pom中加上thymele
- 前言PowerManagerService之亮屏流程分析 分析了亮屏的流程,并归纳出了一个适用于亮屏或灭屏的通用的流程。 但是,灭屏流程还有
- 以下是app.config或web.config的定义,定义了一个参数,键为Isinit,值为false<?xml version=&
- 一、引言在许多编程语言中,都有函数回调这一概念。C 和 C++ 中有函数指针,因此可以将函数作为参数传给其它函数,以便过后调用。而在 Jav
- 一、前言java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区
- 一.Mybatis-Plus——sum聚合函数//总收益 Order order =new Orde
- 本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框
- 前言业务开发中搜索框和列表的组合页面应该是比较常见的场景,那么有什么坑呢?最近在开发过程就遇到了一个问题,输入搜索关键词查询接口返回数据后,
- 前言在真实的项目开发中,使用SpringBoot可以说非常普遍了,而在框架整合中,与数据库的交互无外乎使用jpa,mybatis,mybat
- 一、查看线程的运行状态题目线程有以下6种状态:新建、运行、阻塞、等待、计时等待和终止。new新线程时,线程处于新建 状态。调用start()
- 我实现的思路:1.继承ImageView类2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,
- 本文为大家分享了C#导入导出Excel数据的具体代码,供大家参考,具体内容如 * :对于实体类对象最好新建一个并且继承原有实体类,这样可以将类
- java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,这次好好总结一下。理论先拙劣的表达一下jvm虚拟内存分布:程序计数器是j