工厂模式

 

定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类

 

"对象创建"模式
通过"对象创建"模式绕开New,来没避免对象创建过程中所导致的
紧耦合(依赖具体类),从而支持对象创建的稳定。
他是接口抽象之后的第一步工作。

 

// 定义抽象业务基类
class Splitter{
    public:
    virtual void split() = 0;
    virtual ~ISplitter(){}
}

// 定义具体业务类1
class BinarySplitter : Splitter{
    public:
    virtual void split(){
    }
}

 

// 定义抽象工厂类
class SplitterFactory{
public:
    virtual ISplitter* CreateSplitter()=0; // 返回值 基类的类型
    virtual ~SplitterFactory(){}
};

// 定义具体工厂类1与具体业务类1 对应
class BinarySplitterFactory : public SplitterFactory{
public:
    virtual ISplitter* CreateSplitter(){
        return new BinarySplitter();
    };
};

 

class MainFrom : public From, public IProgress()
{
   SplitterFactory * m_factory;//只需要一个工厂即可,基类指针。
public:    
  
    void setFactory(SplitterFactory *factory)
    {
        m_factory = factory;
    }
    void Button_click()
    {    
     if(m_factory){ FileSplitter
* fSplitter = m_factory->CreateSplitter(); //多态 new fSplitter->split();
} } }

 

SplitterFactory * SpliteFactory = new BinarySplitterFactory()
FileSplitter * fSplitter = SpliteFactory->CreateSplitter();
fSplitter->split();

 

posted @ 2018-12-11 23:59  osbreak  阅读(164)  评论(0编辑  收藏  举报