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

做网站的用处网站推广软件污

做网站的用处,网站推广软件污,百度指数代表什么意思,济南网站建设山东聚搜网见效快可插入适配器与Adaptee的窄接口 在C适配器模式中#xff0c;可插入适配器#xff08;Pluggable Adapter#xff09;是指适配器类的设计允许在运行时动态地插入不同的Adaptee对象#xff0c;从而使适配器具有灵活性和可扩展性。这种设计使得适配器不仅限于适配一个特定的Ad… 可插入适配器与Adaptee的窄接口 在C适配器模式中可插入适配器Pluggable Adapter是指适配器类的设计允许在运行时动态地插入不同的Adaptee对象从而使适配器具有灵活性和可扩展性。这种设计使得适配器不仅限于适配一个特定的Adaptee而是可以适配多个不同的Adaptee。 Adaptee的窄接口Narrow Interface是指Adaptee提供的接口只包含有限的方法这些方法可能不足以满足客户端的需求。适配器的工作就是将这些有限的方法适配成客户端所期望的更丰富的接口。 可插入适配器的实现方式 可插入适配器有以下几种实现方式 对象适配器模式Object Adapter适配器持有Adaptee实例的引用。类适配器模式Class Adapter适配器通过多重继承同时继承目标接口和Adaptee。双适配器模式Two-Way Adapter适配器可以同时作为Adaptee和Target接口的适配器。 下面分别介绍这三种实现方式并给出UML图和C代码示例。 1. 对象适配器模式Object Adapter UML 类图 ------------------- ------------------- | Target | | Adapter | |-------------------| |-------------------| | request() |----------| request() | ------------------- |-------------------|| - adaptee: Adaptee||-------------------|| request() ||-------------------|| doSomething() |-------------------||V-------------------| Adaptee ||-------------------|| doSomething() |-------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// Adaptee 类 class Adaptee { public:void doSomething() const {std::cout Adaptee: Doing something. std::endl;} };// Adapter 类 class Adapter : public Target { private:Adaptee* adaptee;public:Adapter(Adaptee* adaptee) : adaptee(adaptee) {}void request() const override {adaptee-doSomething();} };// 客户端代码 int main() {Adaptee* adaptee new Adaptee();Target* adapter new Adapter(adaptee);adapter-request(); // 调用适配器的方法delete adaptee;delete adapter;return 0; }2. 类适配器模式Class Adapter UML 类图 ------------------- ------------------- | Target | | Adapter | |-------------------| |-------------------| | request() |----------| request() | ------------------- |-------------------|| doSomething() ||-------------------|-------------------^||-------------------| Adaptee ||-------------------|| doSomething() |-------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// Adaptee 类 class Adaptee { public:void doSomething() const {std::cout Adaptee: Doing something. std::endl;} };// Adapter 类 class Adapter : public Target, private Adaptee { public:void request() const override {doSomething();} };// 客户端代码 int main() {Target* adapter new Adapter();adapter-request(); // 调用适配器的方法delete adapter;return 0; }3. 双适配器模式Two-Way Adapter UML 类图 ------------------- ------------------- | Target | | Adapter | |-------------------| |-------------------| | request() |----------| request() | ------------------- |-------------------|| doSomething() ||-------------------|-------------------^||-------------------| Adaptee ||-------------------|| doSomething() |-------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// Adaptee 接口 class Adaptee { public:virtual void doSomething() const 0; };// 具体的 Adaptee 类 class ConcreteAdaptee : public Adaptee { public:void doSomething() const override {std::cout ConcreteAdaptee: Doing something. std::endl;} };// Adapter 类 class Adapter : public Target, public Adaptee { private:ConcreteAdaptee* adaptee;public:Adapter(ConcreteAdaptee* adaptee) : adaptee(adaptee) {}void request() const override {adaptee-doSomething();}void doSomething() const override {adaptee-doSomething();} };// 客户端代码 int main() {ConcreteAdaptee* adaptee new ConcreteAdaptee();Adapter* adapter new Adapter(adaptee);adapter-request(); // 调用适配器的方法adapter-doSomething(); // 调用 Adaptee 的方法delete adaptee;delete adapter;return 0; }总结 可插入适配器和Adaptee的窄接口是适配器模式的两个重要概念。通过对象适配器、类适配器和双适配器这三种实现方式适配器可以灵活地适配不同的Adaptee对象解决接口不兼容的问题。这些实现方式各有优缺点选择哪种方式取决于具体的需求和设计考虑。 在窄接口实现中可以通过抽象实现、使用代理对象和参数化适配器方式来实现适配器模式。下面分别说明这三种方式并给出相应的UML图和C代码示例。 1. 抽象实现Abstract Implementation 抽象实现通过定义一个抽象基类来提供Adaptee的窄接口然后具体的Adaptee实现类从这个抽象基类继承。适配器类可以持有这个抽象基类的引用从而在运行时适配不同的具体实现。 UML 类图 ------------------- ------------------- ------------------- | Target | | Adapter | | Adaptee1 | |-------------------| |-------------------| |-------------------| | request() |----------| request() |----------| doSomething() | ------------------- |-------------------| -------------------| - adaptee: Adaptee||-------------------|-------------------^||------------------- -------------------| AbstractAdaptee | | Adaptee2 ||-------------------| |-------------------|| doSomething() |----------| doSomething() |------------------- -------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// 抽象的 Adaptee 基类 class AbstractAdaptee { public:virtual void doSomething() const 0; };// 具体的 Adaptee 实现类 1 class Adaptee1 : public AbstractAdaptee { public:void doSomething() const override {std::cout Adaptee1: Doing something. std::endl;} };// 具体的 Adaptee 实现类 2 class Adaptee2 : public AbstractAdaptee { public:void doSomething() const override {std::cout Adaptee2: Doing something. std::endl;} };// Adapter 类 class Adapter : public Target { private:AbstractAdaptee* adaptee;public:Adapter(AbstractAdaptee* adaptee) : adaptee(adaptee) {}void request() const override {adaptee-doSomething();} };// 客户端代码 int main() {AbstractAdaptee* adaptee1 new Adaptee1();AbstractAdaptee* adaptee2 new Adaptee2();Target* adapter1 new Adapter(adaptee1);Target* adapter2 new Adapter(adaptee2);adapter1-request(); // 调用适配器的方法adapter2-request(); // 调用适配器的方法delete adaptee1;delete adaptee2;delete adapter1;delete adapter2;return 0; }2. 使用代理对象Proxy Object 代理对象是通过创建一个代理类来间接访问Adaptee的方法。适配器类持有这个代理对象的引用并通过代理对象来调用Adaptee的方法。这种方式可以提供额外的控制和功能比如访问控制、缓存等。 UML 类图 ------------------- ------------------- ------------------- | Target | | Adapter | | Proxy | |-------------------| |-------------------| |-------------------| | request() |----------| request() |----------| doSomething() | ------------------- |-------------------| -------------------| - proxy: Proxy ||-------------------|-------------------^||------------------- -------------------| Proxy | | Adaptee ||-------------------| |-------------------|| doSomething() |----------| doSomething() |------------------- -------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// Adaptee 类 class Adaptee { public:void doSomething() const {std::cout Adaptee: Doing something. std::endl;} };// Proxy 类 class Proxy { private:Adaptee* adaptee;public:Proxy(Adaptee* adaptee) : adaptee(adaptee) {}void doSomething() const {std::cout Proxy: Before calling Adaptee. std::endl;adaptee-doSomething();std::cout Proxy: After calling Adaptee. std::endl;} };// Adapter 类 class Adapter : public Target { private:Proxy* proxy;public:Adapter(Proxy* proxy) : proxy(proxy) {}void request() const override {proxy-doSomething();} };// 客户端代码 int main() {Adaptee* adaptee new Adaptee();Proxy* proxy new Proxy(adaptee);Target* adapter new Adapter(proxy);adapter-request(); // 调用适配器的方法delete adaptee;delete proxy;delete adapter;return 0; }3. 参数化适配器Parameterized Adapter 参数化适配器通过将Adaptee的方法参数化使得适配器可以在运行时传递不同的参数来调用Adaptee的方法。这种方式可以增强适配器的灵活性。 UML 类图 ------------------- ------------------- | Target | | Adapter | |-------------------| |-------------------| | request() |----------| request() | ------------------- |-------------------|| - adaptee: Adaptee||-------------------|-------------------^||-------------------| Adaptee ||-------------------|| doSomething(int)|-------------------C 代码示例 #include iostream// Target 接口 class Target { public:virtual void request() const 0; };// Adaptee 类 class Adaptee { public:void doSomething(int param) const {std::cout Adaptee: Doing something with parameter param . std::endl;} };// Adapter 类 class Adapter : public Target { private:Adaptee* adaptee;int param;public:Adapter(Adaptee* adaptee, int param) : adaptee(adaptee), param(param) {}void request() const override {adaptee-doSomething(param);} };// 客户端代码 int main() {Adaptee* adaptee new Adaptee();Target* adapter new Adapter(adaptee, 42);adapter-request(); // 调用适配器的方法delete adaptee;delete adapter;return 0; }总结 这三种方式都可以在窄接口实现中使用根据具体的需求选择不同的实现方式。抽象实现提供了灵活的适配能力代理对象提供了额外的控制和功能参数化适配器增强了适配器的灵活性。每种方式都有其适用的场景选择合适的方式可以提高代码的可维护性和扩展性。
http://www.w-s-a.com/news/819371/

相关文章:

  • 拖拽式网站开发模具钢东莞网站建设
  • 彩票娱乐网站建设模块化网站开发
  • 孝感网站设计用自己的名字设计头像
  • 高明网站建设哪家好深圳vi设计公司全力设计
  • 工程技术cpu游戏优化加速软件
  • 一起做网店网站入驻收费wordpress 自定义评论样式
  • 深圳高端网站建设公司排名app软件开发sh365
  • 泰州网站整站优化惠州做网站多少钱
  • 做博客网站的php代码一建论坛建工教育网
  • 邢台网站制作费用单页营销网站后台
  • 红色网站建设的比较好的高校用vs2010做购物网站
  • 网站域名备案号查询网页设计实验报告总结模板
  • 什么软件 做短视频网站好大型论坛网站建设
  • 视频网站用什么cms网络运营与维护主要做什么
  • 设计网站主页要多少钱赣州制作网站百度
  • 什么叫高端网站定制网站收录大幅度下降
  • 汝城县网站建设公司aspx网站实例
  • 专业微网站营销diywap手机微网站内容管理系统
  • 盗版做的最好的网站温州logo设计公司
  • 网站建设 中山南充微网站建设
  • 企业网站更新什么内容免费设计软件下载
  • 夏天做哪些网站能致富做网站怎么每天更新内容
  • 个人网站的设计与开发网站建设流程中哪些部分比较重要
  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业