android源码中不同设计模式的使用总结

抽象工厂类和普通工厂类的区别

2017-03-06  本文已影响864人  ahking17
普通工厂类中提供的工厂方法只负责创建某一种类型的对象.

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.----

上一篇 下一篇

猜你喜欢

热点阅读