zoukankan      html  css  js  c++  java
  • 适配器模式(C++)

    介绍

    作用: 作为两个不兼容接口之间的桥梁,属于结构型模式.

    何时使用:

    • 系统需要使用现有类,但是该类的接口并不符合系统的要求;
    • 通过接口转换,将一个类插入到另一个类中.

    关键方案: 继承或依赖(推荐).

    优点:

    • 可以将现有的类转换成系统可以使用类;
    • 提高了类的复用;
    • 增加类的透明度

    缺点:

    • 过多地使用适配器,或让系统非常凌乱

    UML

    image

    示例

    组合实现适配器:

    
    //双端队列,需适配的对象
    class Deque{
    public:
        void push_back(int x);
        void push_front(int x);
        void pop_back();
        void pop_front();
    };
    
    //接口,向外暴露
    class Sequence{
    public:
        virtual void push(int x) = 0;
        virtual void pop() = 0;
    }
    
    //单端队列
    class Queue : public Sequence{
    public:
         void push(int x) override {
             deque_.push_back(x);
         }
         void pop() override {
             deque_.pop_front();
         }
    private:
        Deque deque_;
    };
    
    

    这个是组合实现的适配器,还可以使用继承,不过因为继承的强依赖性,一般会推荐使用组合来实现 :

    //双端队列
    class Deque{
    public:
        void push_back(int x);
        void push_front(int x);
        void pop_back();
        void pop_front();
    };
    
    class Sequence{
    public:
        virtual void push(int x) = 0;
        virtual void pop() = 0;
    }
    
    //单端队列
    class Queue : public Deque, public Sequence {
    public:
         void push(int x) override {
             push_back(x);
         }
         void pop() override {
             pop_front();
         }
    };
    

    适配器模式/装饰模式/代理模式的区别?

    • 适配器的特点在于兼容: 是将一个类(a)通过某种方式转换成另一个类(b);
    • 装饰器模式特点在于增强: 在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b);
    • 代理模式的特点在于隔离: 将一个类(a)转换成具体的操作类(b) .
  • 相关阅读:
    内存使用信息及cpu使用信息
    网站被攻击了怎么办
    seo 百度不收录
    php 使用功能
    sl 动态调用wcf
    php 项目中遇到的问题 ...
    Closures
    php 配置虚拟主机
    jQery 常用工具大全
    jquery基础使用!
  • 原文地址:https://www.cnblogs.com/xl2432/p/13130059.html
Copyright © 2011-2022 走看看