做流量网站,网站备案流程阿里云,国外虚拟主机 两个网站,美乐乐网站模板“对象创建”模式 通过“对象创建”模式绕开new#xff0c;来避免对象创建#xff08;new#xff09;过程中所导致的紧耦合#xff08;依赖具体类#xff09;#xff0c;从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式 Factory MethodAbstract Factory… “对象创建”模式 通过“对象创建”模式绕开new来避免对象创建new过程中所导致的紧耦合依赖具体类从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式 Factory MethodAbstract FactoryPrototypeBuilder 动机 在软件系统中经常面临着创建对象的工作由于需求的变化需要创建的对象的具体类型经常变化。如何应对这种变化如何绕过常规的对象创建方法new提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合 模式定义 定义一个用于创建对象的接口让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟目的解耦手段虚函数到子类。 要点总结 Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型紧耦合关系new会导致软件的脆弱。Factory Method模式通过面向对象的手法将所要创建的具体对象工作延迟到子类从而实现一种扩展而非更改的策略较好地解决了这种紧耦合关系。Factory Method模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同
#include stdafx.h//抽象类
class ISplitter
{
public:virtual void split()0;virtual ~ISplitter(){}
};//具体类
class TxtSplitter : public ISplitter
{virtual void split(){printf(Txt splitter\n);}
};//工厂基类
class SplitterFactory
{
public:virtual ISplitter* CreateSplitter()0;virtual ~SplitterFactory(){}
};//具体工厂
class TxtSplitterFactory: public SplitterFactory
{
public:virtual ISplitter* CreateSplitter(){m_pSplitter new TxtSplitter();return m_pSplitter;}virtual ~TxtSplitterFactory(){if (m_pSplitter)delete m_pSplitter;}
private:ISplitter* m_pSplitter;
};//多态的new此模块没有依赖具体的类依赖的是抽象
void Model(SplitterFactory* pFactory)
{ISplitter* pSplitter pFactory-CreateSplitter();pSplitter-split();
}int _tmain(int argc, _TCHAR* argv[])
{SplitterFactory* pFactory new TxtSplitterFactory();Model(pFactory);delete pFactory;return 0;
}