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

网页内嵌网站营销图片大全

网页内嵌网站,营销图片大全,网站建设 广州,网站网页设计设计方案链接:C 设计模式 链接:C 设计模式 - 装饰模式 桥接模式(Bridge Pattern)是一种结构型设计模式,它通过将抽象部分(业务功能)与实现部分(平台实现)分离,使它们…

链接:C++ 设计模式
链接:C++ 设计模式 - 装饰模式

桥接模式(Bridge Pattern)是一种结构型设计模式,它通过将抽象部分(业务功能)与实现部分(平台实现)分离,使它们可以独立变化。桥接模式的核心思想是将抽象与实现解耦,使得它们可以独立地扩展和变化。

1.问题分析

在开发中,我们经常遇到需要将抽象部分与其实现部分分离的情况,以便它们可以独立变化。例如:

  • 不同的任务(如巡逻、运输、侦查)可以使用不同的设备(如机器人、传感器)。
  • 不同的图形形状(如圆形、矩形)可以使用不同的绘制方式(如矢量图、位图)。

如果将抽象部分与实现部分紧密耦合在一起,当需要添加新的实现或新的抽象时,代码的修改和维护将变得非常复杂。桥接模式通过将抽象部分与实现部分分离,使它们可以独立变化,从而提高系统的灵活性和可扩展性。

2.实现步骤

  1. 定义实现接口:定义一个接口,描述实现部分的行为。
  2. 实现具体实现:实现具体实现类,提供不同的实现部分。
  3. 定义抽象类:定义一个抽象类,描述抽象部分的行为,并持有一个实现部分的引用。
  4. 实现具体抽象:实现具体抽象类,提供不同的抽象部分。
  5. 客户端代码:动态地组合不同的抽象部分和实现部分,并执行任务。

3.代码示例

以机器人的任务作为示例。

3.1.定义实现接口

// 机器人平台接口
class RobotPlatform {public:virtual ~RobotPlatform() = default;virtual void move() = 0;
};

3.2. 实现具体实现类

// 具体机器人平台1:四足机器人
class QuadrupedRobot : public RobotPlatform {public:void move() override { std::cout << "Moving as a quadruped robot." << std::endl; }
};
// 具体机器人平台2:轮式机器人
class WheeledRobot : public RobotPlatform {public:void move() override { std::cout << "Moving as a wheeled robot." << std::endl; }
};
// 具体机器人平台3:履带机器人
class TrackedRobot : public RobotPlatform {public:void move() override { std::cout << "Moving as a tracked robot." << std::endl; }
};

3.3. 定义任务抽象类

// 定义一个任务抽象类,描述机器人的任务行为,并持有一个机器人平台对象的引用
class Task {public:Task(std::shared_ptr<RobotPlatform> robotPlatform) : platform(robotPlatform) {}virtual void performTask() = 0;protected:std::shared_ptr<RobotPlatform> platform;
};

3.4. 实现具体的任务

// 具体任务1:巡逻
class Patrolling : public Task {public:Patrolling(std::shared_ptr<RobotPlatform> robotPlatform) : Task(robotPlatform) {}void performTask() override {std::cout << "Performing patrolling task." << std::endl;platform->move();}
};
// 具体任务2:运输
class Transporting : public Task {public:Transporting(std::shared_ptr<RobotPlatform> robotPlatform) : Task(robotPlatform) {}void performTask() override {std::cout << "Performing transporting task." << std::endl;platform->move();}
};
// 具体任务3:侦查
class Reconnaissance : public Task {public:Reconnaissance(std::shared_ptr<RobotPlatform> robotPlatform) : Task(robotPlatform) {}void performTask() override {std::cout << "Performing reconnaissance task." << std::endl;platform->move();}
};

3.5. 客户端代码

// 动态地组合不同的任务和机器人平台,并执行任务。
int main() {// 创建具体的机器人平台std::shared_ptr<RobotPlatform> quadrupedRobot = std::make_shared<QuadrupedRobot>();std::shared_ptr<RobotPlatform> wheeledRobot = std::make_shared<WheeledRobot>();std::shared_ptr<RobotPlatform> trackedRobot = std::make_shared<TrackedRobot>();// 创建具体的任务,并组合合理的机器人平台std::shared_ptr<Task> patrollingWithQuadruped = std::make_shared<Patrolling>(quadrupedRobot);std::shared_ptr<Task> transportingWithWheeled = std::make_shared<Transporting>(wheeledRobot);std::shared_ptr<Task> reconnaissanceWithTracked = std::make_shared<Reconnaissance>(trackedRobot);// 执行任务std::cout << "Patrolling with Quadruped Robot:" << std::endl;patrollingWithQuadruped->performTask();std::cout << "\nTransporting with Wheeled Robot:" << std::endl;transportingWithWheeled->performTask();std::cout << "\nReconnaissance with Tracked Robot:" << std::endl;reconnaissanceWithTracked->performTask();return 0;
}

4.总结

桥接模式和装饰模式的区别:

  • 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。它通过将抽象和实现放在不同的类层次结构中,并通过组合将它们连接起来,从而提高系统的灵活性和可扩展性。。
  • 装饰模式:动态地给对象添加职责,而不改变对象的接口。它通过创建一系列装饰器类来实现这些职责的扩展,从而在运行时灵活地扩展对象的功能。
http://www.hyszgw.com/news/24420.html

相关文章:

  • 武汉中小企业网站制作公司如何获取网站的seo
  • 基于p2p的网站建设百度代发排名
  • 网页制作免费网站建设广告关键词有哪些类型
  • 重庆网站建设的公司哪家好济宁百度竞价推广
  • 苏州做网站好的最全资源搜索引擎
  • 视频运营管理网站品牌如何推广
  • 南京 百度 网站建设线上推广外包公司
  • 郑州友网站建设软文一般发布在哪些平台
  • 网站主体必须要与域名注册人相同网页设计效果图及代码
  • 婚纱摄影网站建设seo在线短视频发布页
  • 网站建设渠道自己如何制作网页
  • 怎么登录企业网站关键词优化靠谱推荐
  • 绮思网站建设qswoo网站做优化
  • 定制开发网站多少钱百度问答怎么赚钱
  • 哪里帮做企业网站网站点击软件排名
  • 东莞做网站多少钱四年级的简短新闻播报
  • 建设银行网站功能介绍百度学术论文查重免费检测
  • 自己怎么接单做网站seo关键词有哪些类型
  • 网站建设价格差别西安疫情最新数据消息中高风险地区
  • 怎样创建一个网址搜索引擎网站排名优化方案
  • 禹州市门户网站建设河源今日头条新闻最新
  • 微信优惠券网站怎么做的广州百度网站推广
  • 企业网站建设测试题潍坊快速网站排名
  • 昆明seo博客南网站建设爱站关键词挖掘
  • 个人网站建设流程图游戏推广员拉人技巧
  • 渭南做网站的公司电话深圳seo优化排名
  • 营销网站制作多少钱站长源码
  • 如何做网站来做淘宝客好消息tvapp电视版
  • 有哪些网站可以兼职做笔译小程序开发多少钱
  • 如何建立微信网站站长之家是什么网站