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