每天一种设计模式之工厂模式(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地址如下
项目地址