为什么需要抽象工厂模式?
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工 作;同时,由于需求的变化,往往存在更多系列对象的创建工作。
如何应对这种变化?如何绕过常规的对象创建方法(new),提供一 种“封装机制”来避免客户程序和这种“多系列具体对象创建工作” 的紧耦合?
举例说明:
数据库操作>按照工厂模式,我们很容易得到以下代码:
//数据库访问有关的基类
class IDBConnection{//产品基类
};
class IDBConnectionFactory{//工厂Connection基类
public:
virtual IDBConnection* CreateDBConnection()=0;
};
//数据库访问具体类
//一、支持SQL Server
class SqlConnection: public IDBConnection{//产品具体类
};
class SqlConnectionFactory:public IDBConnectionFactory{//具体工厂
//具体工厂中继承工厂基类CreateDBConnection方法,生产具体产品
};
//二、支持Oracle
class OracleConnection: public IDBConnection{//产品具体类
};
class OracleConnectionFactory:public IDBConnectionFactory{//具体工厂
//具体工厂中继承工厂基类CreateDBConnection方法,生产具体产品
};
//客户程序:
//......................