当前位置: 首页 > news >正文

能自己做的ppt网站展览会建设网站平台的作用

能自己做的ppt网站,展览会建设网站平台的作用,wordpress新浪采集,网站二次开发合同以下是针对C03标准的抽象工厂模式#xff08;Abstract Factory#xff09;的详细讲解#xff0c;包含模式原理、C03适配实现、代码示例及使用说明#xff0c;适合需要兼容旧标准的开发场景。 一、抽象工厂模式基础#xff08;C03语境#xff09; 抽象工厂模式是创建型模式…以下是针对C03标准的抽象工厂模式Abstract Factory的详细讲解包含模式原理、C03适配实现、代码示例及使用说明适合需要兼容旧标准的开发场景。 一、抽象工厂模式基础C03语境 抽象工厂模式是创建型模式的重要成员专注于一系列相互关联的产品族创建。在C03环境中虽然缺少智能指针和现代语法但通过原始指针、虚函数和类继承依然能完整实现其核心功能 核心目标提供一个接口用于创建多个产品族中的产品且客户端无需知道具体产品的类型。典型场景跨平台开发如Windows/Linux组件、数据库驱动套件如MySQL/Oracle连接命令对象等需要配套产品的场景。 二、C03中的核心角色实现 抽象工厂模式包含4个核心角色在C03中通过类层次结构实现角色定义与实现要点C03抽象产品Abstract Product纯虚类定义某类产品的接口如按钮、文本框包含纯虚方法和虚析构函数避免析构泄漏。具体产品Concrete Product继承抽象产品实现具体功能如Windows按钮重写虚函数时无需override关键字。抽象工厂Abstract Factory纯虚类声明创建各抽象产品的工厂方法如createButton()返回抽象产品指针。具体工厂Concrete Factory继承抽象工厂实现工厂方法通过new创建并返回具体产品指针需客户端手动管理内存。三、完整代码实现C03 以“数据库访问组件”为例实现支持MySQL和Oracle的“连接”与“命令”产品族 #include iostream #include string// 1. 抽象产品A数据库连接 class DBConnection { public:virtual void connect() const 0; // 连接数据库virtual void disconnect() const 0; // 断开连接virtual ~DBConnection() {} // 虚析构函数 };// 1. 抽象产品B数据库命令 class DBCommand { public:virtual void execute(const std::string sql) const 0; // 执行SQLvirtual ~DBCommand() {} };// 2. 具体产品A1MySQL连接 class MySQLConnection : public DBConnection { public:void connect() const {std::cout MySQL: 连接到数据库服务器 std::endl;}void disconnect() const {std::cout MySQL: 断开数据库连接 std::endl;} };// 2. 具体产品B1MySQL命令 class MySQLCommand : public DBCommand { public:void execute(const std::string sql) const {std::cout MySQL: 执行SQL - sql std::endl;} };// 2. 具体产品A2Oracle连接 class OracleConnection : public DBConnection { public:void connect() const {std::cout Oracle: 连接到数据库服务器 std::endl;}void disconnect() const {std::cout Oracle: 断开数据库连接 std::endl;} };// 2. 具体产品B2Oracle命令 class OracleCommand : public DBCommand { public:void execute(const std::string sql) const {std::cout Oracle: 执行SQL - sql std::endl;} };// 3. 抽象工厂数据库组件工厂 class DBFactory { public:virtual DBConnection* createConnection() const 0; // 创建连接virtual DBCommand* createCommand() const 0; // 创建命令virtual ~DBFactory() {} };// 4. 具体工厂1MySQL工厂 class MySQLFactory : public DBFactory { public:DBConnection* createConnection() const {return new MySQLConnection(); // C03用new创建返回原始指针}DBCommand* createCommand() const {return new MySQLCommand();} };// 4. 具体工厂2Oracle工厂 class OracleFactory : public DBFactory { public:DBConnection* createConnection() const {return new OracleConnection();}DBCommand* createCommand() const {return new OracleCommand();} };// 客户端使用数据库组件 class DataAccess { private:DBFactory* factory;DBConnection* conn;DBCommand* cmd;public:// 构造函数接收具体工厂DataAccess(DBFactory* f) : factory(f), conn(0), cmd(0) {conn factory-createConnection();cmd factory-createCommand();}// 析构函数手动释放内存C03关键步骤~DataAccess() {delete cmd;delete conn;// 工厂由外部管理此处不删除}// 业务方法执行数据库操作void doOperation() const {conn-connect();cmd-execute(SELECT * FROM users);conn-disconnect();} };// 演示代码 int main() {// 场景1使用MySQLstd::cout MySQL操作 std::endl;MySQLFactory mysqlFactory;DataAccess mysqlAccess(mysqlFactory);mysqlAccess.doOperation();// 场景2使用Oraclestd::cout \n Oracle操作 std::endl;OracleFactory oracleFactory;DataAccess oracleAccess(oracleFactory);oracleAccess.doOperation();return 0; } 四、C03实现细节说明内存管理策略 C03没有智能指针必须显式使用new创建对象并用delete释放如DataAccess析构函数中释放conn和cmd。工厂对象建议使用栈分配如MySQLFactory mysqlFactory避免动态内存管理复杂度过高。严格遵循“谁创建谁释放”原则DataAccess创建产品因此负责释放工厂由外部传入不负责释放。多态保障 所有抽象类如DBConnection必须定义虚析构函数否则删除子类对象时可能只调用基类析构函数导致内存泄漏。子类重写虚函数时函数签名参数、返回值、const属性必须与基类完全一致C03无override检查需手动保证。产品族兼容性 同一具体工厂创建的产品如MySQLFactory的MySQLConnection和MySQLCommand天然兼容确保数据库操作正常协同。切换数据库类型时只需替换具体工厂如OracleFactory客户端代码DataAccess无需修改符合开闭原则。五、C03环境下的优缺点 优点 隔离具体实现客户端代码如DataAccess仅依赖抽象接口与MySQLConnection等具体类解耦。产品族一致性确保同一工厂的产品可正确协作如MySQL连接只能搭配MySQL命令。便于扩展产品族新增数据库如PostgreSQL时只需添加PostgreSQLFactory及对应产品无需修改现有代码。 缺点C03特有 内存管理复杂需手动delete对象易出现泄漏或二次释放问题可通过工厂模式单例模式优化。类数量膨胀每增加一个产品族或产品类型需新增多个类如3个数据库×2个产品6个具体产品类3个工厂类。扩展新产品类型困难若需新增产品如DBReader需修改抽象工厂接口及所有具体工厂违反开闭原则。 六、使用建议C03项目 适合场景产品族稳定新增产品族频繁但新增产品类型少的项目如跨平台组件库、数据库驱动套件。内存优化可将具体工厂设计为单例避免重复创建产品对象可考虑对象池模式减少new/delete开销。与工厂方法结合若需新增产品类型如DBReader可在具体工厂中用工厂方法模式实现该产品的创建降低修改成本。 总结 在C03中实现抽象工厂模式虽然需要手动管理内存和注意多态细节但其核心价值——封装产品族创建、保证组件兼容性、简化客户端使用——依然显著。对于需要兼容旧标准且涉及多组关联产品创建的场景这是一种可靠的设计选择。
http://www.pierceye.com/news/893425/

相关文章:

  • 做网站细节电商网站建设 平台
  • 网站建设方案书1500全国中小企业网站
  • 阳江市建设局网站合肥最新消息今天
  • 做关于什么样的网站好货代去什么网站开发客户
  • 中国工程建设造价管理协会网站漳州seo顾问
  • 什么网站可以做2.5D场景网站过程建设
  • google移动网站建站十大原则室内装修工人培训班
  • 自己做网站要会什么软件下载搭建网站有什么用
  • 天津做网站找谁网站如何做首面关键词
  • 微信小程序做链接网站做catalog的免费网站
  • 呼市网站制作招聘建设网站 托管 费用
  • dede自适应网站模板济南著名网站建设
  • 旅游网站排名榜手机开发网站工具
  • 饰品公司网站建设策划书百度seo优化收费标准
  • wordpress企业建站5网站建设
  • 网站运营解决方案皮具网站设计
  • 地宝网 网站建设上海网站制作网站开发
  • 有哪些出名的工业设计网站做废钢铁生意在哪个网站了解
  • wordpress 根目录函数深圳债务优化公司
  • 基于android的app的设计与开发seo链接优化
  • 怎么用优盘做网站登录密钥百度收录网站名字
  • 网站制作的一般步骤网站域名备案需要多长时间
  • 运城市住房与城乡建设局网站郑州百姓网招聘
  • 网站调用网页怎么做重庆手机网站方案设计
  • 购物 网站建设的市场分析泰兴网站建设吧
  • 企业网站代运营微信网页登录wordpress
  • 专业网站制作流程深圳市 网站建设450
  • 怎么做加盟网站海南网站搭建外包
  • 没有网站可以做落地页网站体验方案
  • 重庆便宜做网站的网站内容注意事项