ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

设计模式9——抽象工厂

设计模式9——抽象工厂 动机在软件设计中经常面对一系列相互依赖的对象的创建工作由于需求变化经常面对更多对象的创建工作。1. 引入问题classEmployeeDB{public:DBConnectFactory*dbConnectFact;DBCommandFactory*dbCmdFact;public:vectorEmployeeInfoGetEmployee(){DBConnect*connectiondbConnectFact-DBConnectObjCreate();connection-ConnectNet(ip:192.168.0.1);DBCommand*commanddbCmdFact-DBCommandObjCreate();command-Command(SELECT * FROM TENNER);}}这里使用了工厂方法但存在以下问题1调用者需要维护多个工厂比较繁琐。2如果DBConnectFactory和DBCommandFactory是不匹配的工厂则执行会失败。2. 优化同一厂商生产不同零件的工厂合并为一个。// 工厂基类classDBOptFactory{public:virtualDBConnection*DBConnectObjCreate()0;virtualDBCommand*DBCommandObjFactory()0;};// 具体工厂classSqlConnectFactory:publicDBConnectFactory{public:virtualDBConnection*DBConnectObjCreate(){returnnewSqlDBConnection();}virtualDBCommand*DBCommandObjCreate(){returnnewSqlDBCommand();}};如此以来最终的代码如下classEmployeeDB{public:DBOptFactory*dbOptFact;public:vectorEmployeeInfoGetEmployee(){DBConnect*connectiondbOptFact-DBConnectObjCreate();connection-ConnectNet(ip:192.168.0.1);DBCommand*commanddbOptFact-DBCommandObjCreate();command-Command(SELECT * FROM TENNER);...}}多态就是要实现抽象抽象工厂就是一种不止生产一种具体类型对象的工厂各种对象都可以生产。
返回列表