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

网站图片修改怎么用html做个人的网页

网站图片修改,怎么用html做个人的网页,自适应网站建设优化建站,专业医院网站建设抽象工厂模式 (Abstract Factory) 抽象工厂模式 是一种创建型设计模式#xff0c;提供一个接口#xff0c;用于创建一组相关或互相依赖的对象#xff0c;而无需指定它们的具体类。 意图 提供一个创建一组相关对象的接口#xff0c;而无需指定它们的具体类。解决产品对象之…抽象工厂模式 (Abstract Factory) 抽象工厂模式 是一种创建型设计模式提供一个接口用于创建一组相关或互相依赖的对象而无需指定它们的具体类。 意图 提供一个创建一组相关对象的接口而无需指定它们的具体类。解决产品对象之间的相互依赖问题使得一组对象能协同工作。 使用场景 需要创建一组相关对象 如 GUI 程序中窗口、按钮、菜单等需要统一的外观风格。 需要保证对象之间的兼容性 如游戏开发中不同种族的士兵和建筑需要互相匹配。 需要隐藏具体实现 客户端代码只依赖于产品接口具体实现被封装。 参与者角色 抽象工厂 (Abstract Factory) 声明一组用于创建相关对象的接口。 具体工厂 (Concrete Factory) 实现抽象工厂的接口创建具体的产品。 抽象产品 (Abstract Product) 定义所有产品的公共接口。 具体产品 (Concrete Product) 实现抽象产品的接口为具体工厂生产的对象。 示例代码 以下示例展示了如何使用抽象工厂模式为不同操作系统创建相关的 GUI 组件按钮和窗口。 #include iostream #include memory// 抽象产品 A: 按钮 class Button { public:virtual void render() const 0;virtual ~Button() {} };// 具体产品 A1: Windows 按钮 class WindowsButton : public Button { public:void render() const override {std::cout Rendering Windows Button std::endl;} };// 具体产品 A2: Mac 按钮 class MacButton : public Button { public:void render() const override {std::cout Rendering Mac Button std::endl;} };// 抽象产品 B: 窗口 class Window { public:virtual void render() const 0;virtual ~Window() {} };// 具体产品 B1: Windows 窗口 class WindowsWindow : public Window { public:void render() const override {std::cout Rendering Windows Window std::endl;} };// 具体产品 B2: Mac 窗口 class MacWindow : public Window { public:void render() const override {std::cout Rendering Mac Window std::endl;} };// 抽象工厂 class GUIFactory { public:virtual std::unique_ptrButton createButton() const 0;virtual std::unique_ptrWindow createWindow() const 0;virtual ~GUIFactory() {} };// 具体工厂 1: Windows 工厂 class WindowsFactory : public GUIFactory { public:std::unique_ptrButton createButton() const override {return std::make_uniqueWindowsButton();}std::unique_ptrWindow createWindow() const override {return std::make_uniqueWindowsWindow();} };// 具体工厂 2: Mac 工厂 class MacFactory : public GUIFactory { public:std::unique_ptrButton createButton() const override {return std::make_uniqueMacButton();}std::unique_ptrWindow createWindow() const override {return std::make_uniqueMacWindow();} };// 主函数 int main() {// 选择具体工厂std::unique_ptrGUIFactory factory std::make_uniqueWindowsFactory();// 使用工厂创建产品auto button factory-createButton();auto window factory-createWindow();button-render(); // 输出Rendering Windows Buttonwindow-render(); // 输出Rendering Windows Window// 切换到另一种具体工厂factory std::make_uniqueMacFactory();button factory-createButton();window factory-createWindow();button-render(); // 输出Rendering Mac Buttonwindow-render(); // 输出Rendering Mac Windowreturn 0; }代码解析 1. 抽象产品类 定义了产品的公共接口确保产品类型的一致性 class Button { public:virtual void render() const 0;virtual ~Button() {} };2. 具体产品类 实现了抽象产品接口并提供具体功能 class WindowsButton : public Button { public:void render() const override {std::cout Rendering Windows Button std::endl;} };3. 抽象工厂 定义了创建一组相关产品的接口 class GUIFactory { public:virtual std::unique_ptrButton createButton() const 0;virtual std::unique_ptrWindow createWindow() const 0;virtual ~GUIFactory() {} };4. 具体工厂 实现了抽象工厂接口负责生产具体的产品 class WindowsFactory : public GUIFactory { public:std::unique_ptrButton createButton() const override {return std::make_uniqueWindowsButton();}std::unique_ptrWindow createWindow() const override {return std::make_uniqueWindowsWindow();} };5. 主函数 客户端代码通过工厂接口创建产品无需知道具体产品的实现 std::unique_ptrGUIFactory factory std::make_uniqueWindowsFactory(); auto button factory-createButton(); auto window factory-createWindow(); button-render(); window-render();优缺点 优点 解耦客户端代码只依赖抽象工厂和抽象产品与具体实现无关。保证产品一致性抽象工厂确保一组对象是兼容的。扩展性强可以通过新增具体工厂扩展系统。 缺点 增加复杂性每增加一组产品需要新增抽象类和具体类。灵活性受限对现有产品结构的修改可能需要更新所有工厂。 适用场景 跨平台开发如为不同操作系统设计统一的 GUI。产品族设计如游戏中不同种族的士兵和建筑需要互相匹配。动态扩展产品族如增加新的平台支持。 改进与扩展 结合配置文件 动态选择具体工厂根据运行时条件决定产品族的创建 std::unique_ptrGUIFactory factory; if (platform Windows) {factory std::make_uniqueWindowsFactory(); } else {factory std::make_uniqueMacFactory(); }引入依赖注入框架 通过依赖注入简化工厂选择的逻辑使得代码更易于维护和测试。 总结 抽象工厂模式通过提供一个接口用于创建一组相关对象实现了创建逻辑的集中化和产品族之间的兼容性。 它适用于需要跨平台开发或产品族设计的场景。
http://www.tj-hxxt.cn/news/133609.html

相关文章:

  • 网站改版 合同做签证宾馆订单用啥网站
  • 专注做农产品的网站wordpress会员认证
  • 山东定制版网站建设公司电子商务网站建设需求
  • 静态网页模板素材重庆百度seo排名优化软件
  • 龙岩网站建设加盟wordpress文章编辑软件
  • 做啤酒行业的网站设计外贸网站
  • 平凉市网站建设制作企业网站改版的意义
  • 推广软件赚钱违法吗山西网络营销推广seo
  • 陕西培训网站建设网站建设程序员
  • 1688网站简介智慧团建网站几点关闭
  • 如何自己做网站界面可以放钓鱼网站的免费空间
  • 网站案例代码辽宁建设工程信息网诚信库官网
  • 网站快速优化排名排名做网站干什么
  • 怎么做美食的视频网站建立个人网页
  • 中国建设工程网官方网站网站设计h5
  • 建设一个连接的网站做鞋子的招聘网站有哪些
  • 青海网站推广策划方案南宁网站定制
  • 上传下载文件网站开发的php源码建设厅注册中心网站首页
  • 保定建设网站及推广电商网站设计的流程
  • 网站简繁切换js网站开发与制作论文开题
  • 网站设计制作 一年价格如何制作网站模板
  • 如何选择网站定制公司wordpress slideshow
  • 网站图片怎么优化怎么自己做淘宝客网站吗
  • iis 编辑网站绑定舆情监控都有哪些内容
  • 网站建设有创意wordpress会员积分邀请
  • 环保企业的网站怎么做网件路由器无法登录
  • 天津网站建设制作免费怎么做网站流量统计分析
  • 网站制作学费多少钱邯郸最新通告今天
  • 如何查网站注册信息延吉最好的网站建设公司
  • 安徽省建设工程安全协会网站大埔做网站