JAVA简单工厂模式(从现实生活角度理解代码原理)
作者:潘侯爷 时间:2021-10-29 12:39:32
简单工厂模式(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
标签:java,工厂模式
0
投稿
猜你喜欢
Spring BeanFactory和FactoryBean有哪些区别
2023-06-25 07:42:09
利用Intellij Idea连接远程服务器实现远程上传部署功能
2022-05-31 13:15:54
Spring Boot Admin 进行项目监控管理的方法
2021-09-01 23:39:19
Java C++ 算法题解leetcode669修剪二叉搜索树示例
2022-09-22 04:56:13
SpringBoot返回多种格式的数据的实现示例
2023-11-24 14:22:52
java中断线程的正确姿势完整示例
2023-01-27 06:33:58
Java SSH 秘钥连接mysql数据库的方法
2022-07-11 21:23:18
springboot项目启动,但是访问报404错误的问题
2022-09-21 10:30:10
浅谈Java三目运算
2023-11-29 07:27:59
java中map和对象互转工具类的实现示例
2023-06-05 11:08:30
Spring Boot配置线程池拒绝策略的场景分析(妥善处理好溢出的任务)
2022-08-05 07:12:24
Java如何重写object类的equals方法详解
2023-09-01 15:54:57
Java线程中的常见方法(start方法和run方法)
2023-11-16 17:41:32
C#中using语句的用法
2023-07-02 05:33:24
解析spring加载bean流程的方法
2023-11-29 13:50:32
IDEA安装后找不到.vmoptions文件的问题及解决
2023-10-05 22:43:44
Java中的stream流的概念解析及实际运用总结
2022-06-10 23:19:10
使用jenkins部署springboot项目的方法步骤
2022-06-05 05:18:31
Java实现俄罗斯方块的源码分享
2023-02-17 04:20:48
java多线程加锁以及Condition类的使用实例解析
2023-08-07 07:25:30