普通工厂类中提供的工厂方法只负责创建某一种类型的对象.
eg. 只负责创建NativePage类的对象.
public class NativePageFactory {
static NativePage createNativePageForURL(String url, NativePage candidatePage,
Tab tab, TabModelSelector tabModelSelector, Activity activity,
boolean isIncognito) {
}
public static NativePage createErrorNativePageJustForFrozenNativePage(Activity activity, Tab tab, WebPageInfo wpi) {
return new ErrorNativePage(activity, tab, wpi);
}
public static NativePage createDangerNativePageJustForFrozenNativePage(Activity activity, Tab tab) {
return new DangerNativePage(activity, tab);
}
}
可以看到, 3个工厂方法创建的对象都是NativePage类型的.
抽象工厂类中提供多个工厂方法, 可以创建出不同类型的对象.
eg. MacFactory类中提供的工厂方法,分别负责创建2种不同类型的对象.
class AbstractFactory {
public:
virtual Button* CreateButton() =0;
virtual Border* CreateBorder() =0;
};
class MacFactory: public AbstractFactory {
public:
MacButton* CreateButton() { return new MacButton; }
MacBorder* CreateBorder() { return new MacBorder; }
};
class WinFactory: public AbstractFactory {
public:
WinButton* CreateButton() { return new WinButton; }
WinBorder* CreateBorder() { return new WinBorder; }
};
可以看到, MacFactory类提供的2个方法分别负责创建Button和Border两种不同类型的对象.
refer to:
https://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82
----DONE.----
网友评论