工厂模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
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();