设计模式10之c++外观模式(含示例代码)

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简单的接口,隐藏了一个或多个复杂的子系统的复杂性,使客户端可以更容易地使用这些子系统。

外观模式有三个角色:

  • 外观(Facade):提供了一个简单的接口,封装了子系统中的业务逻辑。
  • 子系统(Subsystems):实现了子系统中的功能,但不包含外观。
  • 客户端(Client):使用外观来简化与子系统的交互。

下面是一个简单的示例代码:

#include <iostream>

class Subsystem1 {
public:
    void operation1() {
        std::cout << "Subsystem1 operation1" << std::endl;
    }
};

class Subsystem2 {
public:
    void operation2() {
        std::cout << "Subsystem2 operation2" << std::endl;
    }
};

class Facade {
private:
    Subsystem1 subsystem1_;
    Subsystem2 subsystem2_;
public:
    void operation() {
        subsystem1_.operation1();
        subsystem2_.operation2();
    }
};

int main() {
    Facade facade;
    facade.operation();
    return 0;
}

上述示例中,我们有两个子系统 Subsystem1Subsystem2,并且有一个外观 Facade,该外观通过其 operation() 方法调用子系统中的方法,从而向客户端提供了一个简单的接口。客户端只需要调用 Facade 的方法即可使用子系统,而无需关心其复杂性。

优点:

  • 提供了一个简单的接口,对客户端隐藏了子系统的复杂性。
  • 降低了客户端与子系统之间的耦合度,隔离了客户端与子系统之间的变化。
  • 可以提高代码的可维护性和可读性。

缺点:

  • 外观模式可能会导致系统变得更加复杂。虽然外观模式可以隐藏一些复杂性,但它也增加了另一个层次的间接性,导致了更多的代码和更难调试的问题。
  • 如果需要修改某个子系统的功能,可能需要修改外观的代码。这可能会导致外观不再简单,并且可能需要重新设计。

猜你喜欢

转载自blog.csdn.net/dica54dica/article/details/129744654