用途:
定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 Factory Method使一个类的 实例化延迟到其子类
案例:
假定现在有两个厨师,一个只会做中餐,另一个只会做西餐,餐品分为熟食和生食两类。顾客需要顾客需要根据自己的口味来选择对应的厨师并告知其需要熟食还是生食,厨师根据顾客的口味来进行烹制。
以厨师为例,首先定义厨师和食物两个接口
public interface Cook {
Food cookFood(FoodType foodType);
}
public interface Food {
FoodType getFoodType();
}
定义食物的枚举类型
public enum FoodType {
HOT("热的"), COLD("凉的");
private String name;
FoodType(String foodType) {
this.name = foodType;
}
public String getName() {
return name;
}
}
定义两种厨师的实现类,分别负责西餐和中餐的烹饪工作
public class WesternCook implements Cook {
public Food cookFood(FoodType foodType) {
return new WesternFood(foodType);
}
}
public class ChineseCook implements Cook {
public Food cookFood(FoodType foodType) {
return new ChineseFood(foodType);
}
}
生成食物对象时只需调用厨师对象的工厂方法即可
Cook cook1 = new WesternCook();
Cook cook2 = new ChineseCook();
Food food1 = cook1.cookFood(FoodType.COLD);
Food food2 = cook2.cookFood(FoodType.HOT);
本文通过一个生动的例子,详细解析了工厂方法模式的概念及其应用。通过定义一个用于创建对象的接口,让子类决定实例化哪个类,实现了类的实例化延迟。以厨师为例,展示了如何根据不同需求选择合适的子类进行对象的创建。
1479

被折叠的 条评论
为什么被折叠?



