3
我正在浏览SO中的“工厂方法”页面,并且遇到了这个link。 和this comment。这个例子看起来像一个变种,并认为以其原始方式实现:将实例化推迟到子类...工厂方法实施
这是我的尝试。以下代码是否实现链接中指定示例的Factory模式?请验证并建议是否必须进行重新分解。
public class ScheduleTypeFactoryImpl implements ScheduleTypeFactory {
@Override
public IScheduleItem createLinearScheduleItem() {
return new LinearScheduleItem();
}
@Override
public IScheduleItem createVODScheduleItem() {
return new VODScheduleItem();
}
}
public class UseScheduleTypeFactory {
public enum ScheduleTypeEnum {
CableOnDemandScheduleTypeID,
BroadbandScheduleTypeID,
LinearCableScheduleTypeID,
MobileLinearScheduleTypeID
}
public static IScheduleItem getScheduleItem(ScheduleTypeEnum scheduleType) {
IScheduleItem scheduleItem = null;
ScheduleTypeFactory scheduleTypeFactory = new ScheduleTypeFactoryImpl();
switch (scheduleType) {
case CableOnDemandScheduleTypeID:
scheduleItem = scheduleTypeFactory.createVODScheduleItem();
break;
case BroadbandScheduleTypeID:
scheduleItem = scheduleTypeFactory.createVODScheduleItem();
break;
case LinearCableScheduleTypeID:
scheduleItem = scheduleTypeFactory.createLinearScheduleItem();
break;
case MobileLinearScheduleTypeID:
scheduleItem = scheduleTypeFactory.createLinearScheduleItem();
break;
default:
break;
}
return scheduleItem;
}
}
这是**不是**工厂方法模式;这正是OP引用的[question]原始作者(http://stackoverflow.com/questions/806911/is-this-factory-method-creation-pattern)使用的模式。这个问题的答案表明这是一个“简单工厂”,而不是GoF的“工厂方法”。 (我发现这个和这个问题,因为我也想更好地理解*真实*工厂方法) – 2011-08-26 18:08:04