设计模式之对象构建模式 - 抽象工厂、工厂方法、生成器、单例


抽象工厂

    提供一个接口,用于创建一系列相关的对象。
    
class Widget { ... }
    class TextBox : Widget {...};
    class Button : Widget { ... }
    
    interface WidgetFactory {
        Widget createWidget();
    };
    
    class TextBoxFactory : WidgetFactory {
        Widget createWidget() { return new TextBox();}
    }
    class ButtonFactory : WidgetFactory {
        Widget createWidget() { return new Button(); }
    }




工厂方法


    定义一个接口方法,根据参数创建不同的对象。
class Widget { ... }
    class TextBox : Widget {...};
    class Button : Widget { ... }
    
    class WidgetFactory {
        Widget createWidget(int widgetType) {
            if ( widgetType == TEXTBOX ) return new TextBox();
            if ( widgetType == BUTTON )  return new Button();
            return null;
        }
    };




生成器


    复杂对象的整体创建过程,与各个组成部分的创建相分离解耦。
    对复杂对象的整体创建过程进行抽象,各个组成部分可自由替换。
class PageHead;
    class PageBody;
    class PageFoot;
    interface PageBuilder {
        PageHead buildHead();
        PageBody buildBody();
        PageFoot buildFoot();
    }
    class Page  {
        PageHead m_head;
        PageBody m_body;
        PageFoot m_foot;
        
        static Page createPage (PageBuild builder) {
            Page page;
            page.m_head = builder.buildHead();
            page.m_body = builder.buildBody();
            page.m_foot = builder.buildFoot();
            return page;
        }
    }



   

单例模式


    保证一个类只有一个实例。
class Singleton {
    public:
        static Singleton * getInstance() {
            if ( _instance == null ) _instance = new Singleton;
            return _instance;
        }
    protected:
        Singleton(){}
    private:
        static Singleton * _instance;
    }





你可能感兴趣的:(单例,设计模式,抽象工厂,工厂方法,生成器)