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
  • asp之家 软件编程 m.aspxhome.com