每天一种设计模式之工厂模式(Java实现)

每天一种设计模式之工厂模式(Java实现)

工程模式概述

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

工厂模式常常用于复杂对象的创建,对于简单对象的创建我们直接使用new关键字就能创建。

示例

我们简单举个例子来说明工厂模式:
现在我们要给麦当劳开发一个点餐系统,点餐系统里的食物都需要实现Food接口,而Food的种类多种多样,有AmericanBurger(美国汉堡)、FrenchFries(法国薯条)、IndianMiFans(印度炒饭)
他们都实现了Food接口
这样我们点餐的时候并不是通过自己(new关键字创建),而是给营业员(工厂类)一个信号(参数),告诉他们我们想要的食物种类,然后他们做好了后端给我们

源码实现

首先我们要定义一个Food接口

public interface Food{
   void printName();
}

然后我们创建实现接口的食物类

美国汉堡 AmericanBurger

public class AmericanBurger implements Food{
   @Override
   public void printName() {
      System.out.println("美国汉堡真香");
   }
}

法国薯条 FrenchFries

public class FrenchFries implements Food{
   @Override
   public void printName() {
      System.out.println("法国薯条真香");
   }
}

印度炒饭 IndianMiFans

public class IndianMiFans implements Food{
   @Override
   public void printName() {
      System.out.println("印度炒饭真香");
   }
}

创建工厂类FoodFactory

public class FoodFactory {
   public Food getFood(String foodType){       
      if(foodType.equalsIgnoreCase("AmericanBurger")){
         return new AmericanBurger();
      } else if(foodType.equalsIgnoreCase("FrenchFries")){
         return new FrenchFries();
      } else if(foodType.equalsIgnoreCase("IndianMiFans")){
         return new IndianMiFans();
      }
      // 没有匹配值返回空
      return null;
   }
}

最后编写main方法进行测试

public class Demo {
   public static void main(String[] args) {
      FoodFactory foodFactory = new FoodFactory ();
 
 	  //调用每个实例的printName方法
      foodFactory.getFood("AmericanBurger").printName();
      foodFactory.getFood("FrenchFries").printName();
      foodFactory.getFood("IndianMiFans").printName();
 
   }
}

得到结果

美国汉堡真香
法国薯条真香
印度炒饭真香

以上就是关于工厂模式的全部内容~

我创建了一个开源项目涵盖了33种设计模式的源码,GitHub地址如下
项目地址

发布了37 篇原创文章 · 获赞 35 · 访问量 6509

猜你喜欢

转载自blog.csdn.net/itkfdektxa/article/details/102918783
今日推荐