抽象工厂模式
在软件系统中,经常面临着"一些列相互依赖的对象"的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(NEW),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合?
1、如果没有应对"多系列对象构建"的需求变化,则没有必要使用抽象工厂方法。这时候,使用简单的工厂模式完全可以。 2、"系列对象"指的是在某一特定的系列下的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。 3、抽象工厂模式主要用于应对"新系列"的需求变动。其缺点在于难以因对"新对象"的需求变动。
// 定义抽象业务类 class IDBConnection{ }; class IDBCOmmand{ }; class IDDataReader{ }; // 定义抽象工厂类 class dbFactory{ public: virtual IDBConnection * CreateDBConnection()=0; virtual IDBCOmmand * CreateBCOmmand()=0; virtual IDDataReader * CreateDataReader()=0; }; //定义工厂类 class SQLDBFactory : public dbFactory{ IDBConnection * CreateDBConnection(){} IDBCOmmand * CreateBCOmmand(){} IDDataReader * CreateDataReader(){} };
class EmployDAO(){ IDBFactory * m_dbfactory; public: void CreateSQLDBFactory(){ IDBConnection * connect = new m_dbfactory->CreateDBConnection(); IDBCOmmand * command = new m_dbfactory->CreateBCOmmand(); IDDataReader * reader = new m_dbfactory->CreateDataReader(); } }