将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    当系统数据和行为都正确,但接口不符时,应该考虑使用 Adapter,目的是使控制范围之外的一个原有对象与某个接口匹配。Adapter 模式应用于复用一些现存的类,但是接口又与复用环境要求不一致的情况

    1. #include <iostream>
    2. #include <memory>
    3. class Target {
    4. public:
    5. virtual void print() const = 0;
    6. virtual ~Target() = default;
    7. };
    8. class Adaptee {
    9. public:
    10. virtual void printImpl() const { std::cout << "Adaptee\n"; }
    11. virtual ~Adaptee() = default;
    12. };
    13. class Adapter final : public Target, public Adaptee {
    14. public:
    15. void print() const override { Adaptee::printImpl(); }
    16. ~Adapter() = default;
    17. };
    18. auto main() -> int {
    19. std::unique_ptr<Target> target = std::make_unique<Adapter>();
    20. target->print();
    21. return 0;
    22. }