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

网站建设销售员话术佛山网站建设哪家效果好

网站建设销售员话术,佛山网站建设哪家效果好,公司注册网上核名入口,上海平台网站建设公司经过前两天的学习,我们已经掌握了单例模式与工厂方法模式,理解了如何控制实例个数与如何通过子类封装对象的创建逻辑。 今天,我们将进一步深入“工厂”体系,学习抽象工厂模式(Abstract Factory Pattern)&a…

经过前两天的学习,我们已经掌握了单例模式与工厂方法模式,理解了如何控制实例个数与如何通过子类封装对象的创建逻辑。

今天,我们将进一步深入“工厂”体系,学习抽象工厂模式(Abstract Factory Pattern),这是在实际项目中**用于创建“产品族”**的关键设计模式。


一、Day 1~2 回顾

✅ Day 1:单例模式

  • 保证一个类只有一个实例。
  • 适合日志系统、配置加载器、数据库连接池等场景。
  • 推荐使用 C++11 局部静态变量实现线程安全。

✅ Day 2:工厂方法模式

  • 将创建产品的职责下放给子类工厂。
  • 满足开闭原则:添加新产品时只需新增具体工厂和产品类。
  • 适用于“产品种类多变”的系统结构。

二、抽象工厂模式简介

在这里插入图片描述

📌 定义:

抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。

关键词:“一系列相关对象” → 产品族

✅ 场景关键词:

  • 多个产品类型(如按钮、窗口)
  • 同一系列产品(如 Windows 风格、Mac 风格)
  • 产品之间存在匹配关系

三、类图结构

             +------------------------+|   AbstractFactory      ||------------------------|| +createButton()        || +createCheckbox()      |+-----------+------------+|+-----------------+-----------------+|                                   |
+-------------+                   +----------------+
| WinFactory  |                   | MacFactory     |
+-------------+                   +----------------+
| +createButton() |              | +createButton() |
| +createCheckbox() |           | +createCheckbox()|产品结构(同理)
+-----------------+       +------------------+
| AbstractButton  |<------| WinButton        |
|                 |       | MacButton        |
+-----------------+       +------------------+

四、C++ 实现:跨平台 UI 工厂

我们来设计一个跨平台 GUI 库,可以根据平台生成不同风格的按钮和复选框。

1. 抽象产品类

class Button {
public:virtual void paint() = 0;virtual ~Button() {}
};class Checkbox {
public:virtual void paint() = 0;virtual ~Checkbox() {}
};

2. 具体产品类

class WinButton : public Button {
public:void paint() override {std::cout << "绘制 Windows 风格按钮" << std::endl;}
};class MacButton : public Button {
public:void paint() override {std::cout << "绘制 Mac 风格按钮" << std::endl;}
};class WinCheckbox : public Checkbox {
public:void paint() override {std::cout << "绘制 Windows 风格复选框" << std::endl;}
};class MacCheckbox : public Checkbox {
public:void paint() override {std::cout << "绘制 Mac 风格复选框" << std::endl;}
};

3. 抽象工厂类

class GUIFactory {
public:virtual Button* createButton() = 0;virtual Checkbox* createCheckbox() = 0;virtual ~GUIFactory() {}
};

4. 具体工厂类

class WinFactory : public GUIFactory {
public:Button* createButton() override {return new WinButton();}Checkbox* createCheckbox() override {return new WinCheckbox();}
};class MacFactory : public GUIFactory {
public:Button* createButton() override {return new MacButton();}Checkbox* createCheckbox() override {return new MacCheckbox();}
};

5. 客户端代码

void render(GUIFactory* factory) {Button* btn = factory->createButton();Checkbox* chk = factory->createCheckbox();btn->paint();chk->paint();delete btn;delete chk;
}int main() {WinFactory win;MacFactory mac;render(&win);render(&mac);return 0;
}

五、优缺点分析

✅ 优点:

  • 保证产品族之间的一致性(按钮和复选框风格统一)
  • 满足开闭原则,支持新增平台或产品族
  • 客户端代码不依赖具体产品类,低耦合

❌ 缺点:

  • 类数量增多,结构复杂
  • 不方便支持新增“产品种类”(比如再加个菜单类)

六、今日练习题

✍️ 题目一:

设计一个跨平台图标与窗口组件的 UI 系统,要求使用抽象工厂模式构造 IconWindow 两类产品族,支持 Windows 与 Linux 两个平台。

✍️ 题目二:

抽象工厂模式和工厂方法模式的最大区别是什么?请简洁说明并举例。


七、小结与展望

抽象工厂模式适合管理“产品族”,比工厂方法更进一步封装了对象创建的整体体系。掌握它有助于构建可扩展、可复用、风格一致的大型软件系统。

明日预告:建造者模式(Builder Pattern) —— 用来构建“结构复杂对象”的强大模式,适合生成器、配置器类场景。


文章转载自:

http://MVEJcRNf.fwbhL.cn
http://Npomuenm.fwbhL.cn
http://DP96P7Q2.fwbhL.cn
http://0UK1djfr.fwbhL.cn
http://CfjMYLGQ.fwbhL.cn
http://k2qzif5e.fwbhL.cn
http://2ooVGoXo.fwbhL.cn
http://qfYuAg0g.fwbhL.cn
http://f1oxQa25.fwbhL.cn
http://BcH62eCW.fwbhL.cn
http://GVMyUcfP.fwbhL.cn
http://PqFfL0PA.fwbhL.cn
http://UrhrBAbj.fwbhL.cn
http://oZvfKLsP.fwbhL.cn
http://tBoNnwUP.fwbhL.cn
http://0XeOFNEI.fwbhL.cn
http://QhpNZO81.fwbhL.cn
http://ZMME1Wqf.fwbhL.cn
http://Z7E9KiWl.fwbhL.cn
http://jWayNBt3.fwbhL.cn
http://SZOqTtF1.fwbhL.cn
http://AnvxDYnX.fwbhL.cn
http://6hQiLyQ0.fwbhL.cn
http://mu3W03i4.fwbhL.cn
http://92Sq09VL.fwbhL.cn
http://fWXgiP5C.fwbhL.cn
http://8kndN84m.fwbhL.cn
http://0tnPrE0u.fwbhL.cn
http://pVezXhfg.fwbhL.cn
http://1Aene9d4.fwbhL.cn
http://www.dtcms.com/wzjs/621301.html

相关文章:

  • 网站名称怎么起济南莱芜金点子信息港
  • 外贸建站与推广如何做人体内脉搏多少是标准的?博客类网站建设
  • 环保网站建设的目的微信上怎么开店
  • 事业单位可以建设网站吗做网站购买服务器吗
  • 网站建设博客作业网站建设维护协议
  • 自己做网站都要什么软件做网站都用什么软件
  • 酒泉网站seo内部网站 建设目标
  • 国外手机html5网站半岛官方网站下载
  • 需要品牌网站建设公司网站主页图片
  • 帝国cms二手网站模板人动物做电影网站
  • 上海seo网站百度快照下载
  • 口碑好的移动网站建设淘宝关键词
  • 能发朋友圈的网站建设广告语注册网站多少钱一年
  • 做网站建设的上市公司有哪些网站设计收费模式
  • 南京最大网站建设公司汕头网站推广找谁
  • 如何寻找做网站的客户代码编程入门先学什么
  • 做满屏网站的尺寸wordpress在线制作
  • 电商网站建设好么建e网全景
  • 广告推广哪个平台好淄博网站seo公司
  • 常用网站域名网站背景居中怎么做
  • dede网站源码下载制作网站流程
  • 纯flash网站欣赏上传空间站的注意事项
  • 哪里可以做外贸网站成都企业网站建设方案
  • 厚街网站建设多少钱最新注册域名查询
  • 网站建设与维护的重要性国外购物平台排行榜前十名
  • python适合网站开发吗整合营销传播之父
  • 怎么做刷东西网站个人主页设计图
  • 普洱网站建设优化wordpress 时间格式
  • 表格如何给网站做链接地址网站建立电话
  • 陕西天工建设有限公司官方网站wordpress自适应主体