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

做标记网站常用网站推广方法及资源

做标记网站,常用网站推广方法及资源,企业怎么在网站上做宣传,网站换代理适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间能够协同工作。 概念解析 适配器模式的核心思想是: 接口转换:将一个类的接口转换成客户希望的另一个接口 兼容性:使原本由于接…

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间能够协同工作。

概念解析

适配器模式的核心思想是:

  1. 接口转换:将一个类的接口转换成客户希望的另一个接口

  2. 兼容性:使原本由于接口不兼容而不能一起工作的类可以一起工作

  3. 包装:通过包装的方式实现接口转换

主要组成部分

  1. 目标接口(Target):客户端期望的接口

  2. 适配者(Adaptee):需要被适配的现有接口

  3. 适配器(Adapter):将适配者接口转换为目标接口的类

代码示例

下面是一个完整的适配器模式示例,包含详细注释:

#include <iostream>
#include <memory>
#include <string>
#include <cmath>// ==================== 目标接口 ====================
// 客户端期望的几何图形接口
class Shape {
public:virtual void draw(int x1, int y1, int x2, int y2) = 0;virtual ~Shape() = default;
};// ==================== 适配者 ====================
// 现有的直线绘制类(不兼容的接口)
class LegacyLine {
public:void draw(int x1, int y1, int x2, int y2) {std::cout << "绘制直线: 从(" << x1 << "," << y1 << ")到(" << x2 << "," << y2 << ")" << std::endl;}
};// 现有的矩形绘制类(不兼容的接口)
class LegacyRectangle {
public:void draw(int x, int y, int w, int h) {std::cout << "绘制矩形: 左上角(" << x << "," << y << "), 宽" << w << ", 高" << h << std::endl;}
};// ==================== 适配器 ====================
// 直线适配器(对象适配器)
class LineAdapter : public Shape {
private:std::unique_ptr<LegacyLine> adaptee_;public:LineAdapter() : adaptee_(std::make_unique<LegacyLine>()) {}void draw(int x1, int y1, int x2, int y2) override {adaptee_->draw(x1, y1, x2, y2);}
};// 矩形适配器(对象适配器)
class RectangleAdapter : public Shape {
private:std::unique_ptr<LegacyRectangle> adaptee_;public:RectangleAdapter() : adaptee_(std::make_unique<LegacyRectangle>()) {}void draw(int x1, int y1, int x2, int y2) override {int x = std::min(x1, x2);int y = std::min(y1, y2);int width = std::abs(x2 - x1);int height = std::abs(y2 - y1);adaptee_->draw(x, y, width, height);}
};// ==================== 类适配器(通过多重继承)====================
class ClassAdapter : public Shape, private LegacyRectangle {
public:void draw(int x1, int y1, int x2, int y2) override {int x = std::min(x1, x2);int y = std::min(y1, y2);int width = std::abs(x2 - x1);int height = std::abs(y2 - y1);LegacyRectangle::draw(x, y, width, height);}
};// ==================== 客户端代码 ====================
void drawShape(Shape& shape, int x1, int y1, int x2, int y2) {shape.draw(x1, y1, x2, y2);
}int main() {std::cout << "=== 适配器模式演示 ===" << std::endl;// 使用对象适配器std::cout << "\n使用对象适配器:" << std::endl;LineAdapter lineAdapter;drawShape(lineAdapter, 10, 20, 30, 40);RectangleAdapter rectAdapter;drawShape(rectAdapter, 10, 20, 30, 40);// 使用类适配器std::cout << "\n使用类适配器:" << std::endl;ClassAdapter classAdapter;drawShape(classAdapter, 15, 25, 35, 45);// 直接使用Legacy类(不兼容)std::cout << "\n直接使用Legacy类:" << std::endl;LegacyLine line;line.draw(5, 5, 25, 25);LegacyRectangle rect;rect.draw(5, 5, 20, 20); // 参数含义不同return 0;
}

模式优势

  1. 兼容性:使不兼容的接口能够协同工作

  2. 复用性:可以复用现有的类,无需修改其源代码

  3. 灵活性:可以同时适配多个适配者类

  4. 开闭原则:引入适配器而不改变现有代码

  5. 透明性:对客户端隐藏了适配的细节

适用场景

  1. 当需要使用现有的类,但其接口与你的需求不匹配时

  2. 当想要创建一个可复用的类,该类与不相关或不可预见的类协同工作

  3. 当需要统一多个现有子类的接口时(适配器可以统一这些接口)

  4. 在遗留代码集成、第三方库适配等场景中

http://www.dtcms.com/wzjs/384734.html

相关文章:

  • 关于建设网站业务系统的请示网页制作网站
  • wordpress换域名不能访问湖南关键词优化品牌价格
  • 新疆建设职业学院网站6最新推广注册app拿佣金
  • 网站面包屑导航怎么做的腾讯广告联盟官网
  • 做动物网站的原因是想要导航页面推广app
  • 深圳建设工程交易保定seo网络推广
  • 佛山外贸网站建设价位网络营销策略案例分析
  • 网站目前如何做外链链接式友谊
  • wordpress 整合铁岭网站seo
  • 虎门网站建设公司百度关键词优化词精灵
  • 想自己做个公司网站不知道怎么做我是做推广的怎么找客户
  • 北京信息维护公司简单的seo
  • 电商平台系统seo公司 彼亿营销
  • 沈阳男科医院在哪里seo效果检测步骤
  • 12306网站做的好丑提高工作效率的方法有哪些
  • 广州微网站建设案例快刷网站
  • 毕业设计做音乐网站网站建设流程是什么
  • 免费php企业网站管理系统北京昨天出啥大事了
  • 2021年php凉透了seo推广任务小结
  • 本标准在住房城乡建设部门户网站免费推广软件工具
  • 查网站是不是用shopify做的免费行情软件网站下载大全
  • .netcms网站管理系统免费换友情链接
  • 武汉汉口做网站公司新站seo优化快速上排名
  • 做网站哪里找程序员阿里云盘资源搜索引擎
  • 福州网站优化整合网络营销外包
  • 网站制作知名公司企查查在线查询
  • wordpress安装ssl后网站404地产渠道12种拓客方式
  • windos 下做网站工具太原seo代理商
  • 上海专业网站建设咨询网络营销方式包括哪些
  • 做普通网站价格南宁seo专员