外观模式是一种结构型设计模式,为子系统中的一组接口提供一个一致的接口。外观模式定义了一个高层接口,使得子系统更易于使用。

特性 | 外观模式 | 直接调用子系统 |
|---|---|---|
接口复杂度 | 简单统一 | 复杂,需了解多个接口 |
耦合性 | 松耦合 | 紧耦合 |
适应性 | 易于扩展和修改 | 扩展时影响客户端 |
使用场景 | 封装复杂子系统 | 客户端需灵活控制子系统 |
#include <iostream>
using namespace std;
// 子系统A
class SubsystemA {
public:
void methodA() const {
cout << "SubsystemA: methodA executed." << endl;
}
};
// 子系统B
class SubsystemB {
public:
void methodB() const {
cout << "SubsystemB: methodB executed." << endl;
}
};
// 子系统C
class SubsystemC {
public:
void methodC() const {
cout << "SubsystemC: methodC executed." << endl;
}
};
// 外观类
class Facade {
private:
SubsystemA subsystemA;
SubsystemB subsystemB;
SubsystemC subsystemC;
public:
void operation1() {
cout << "Facade: operation1 executing." << endl;
subsystemA.methodA();
subsystemB.methodB();
}
void operation2() {
cout << "Facade: operation2 executing." << endl;
subsystemC.methodC();
}
};
// 客户端代码
int main() {
Facade facade;
facade.operation1();
facade.operation2();
return 0;
}using System;
// 子系统A
public class SubsystemA {
public void MethodA() {
Console.WriteLine("SubsystemA: MethodA executed.");
}
}
// 子系统B
public class SubsystemB {
public void MethodB() {
Console.WriteLine("SubsystemB: MethodB executed.");
}
}
// 子系统C
public class SubsystemC {
public void MethodC() {
Console.WriteLine("SubsystemC: MethodC executed.");
}
}
// 外观类
public class Facade {
private SubsystemA subsystemA = new SubsystemA();
private SubsystemB subsystemB = new SubsystemB();
private SubsystemC subsystemC = new SubsystemC();
public void Operation1() {
Console.WriteLine("Facade: Operation1 executing.");
subsystemA.MethodA();
subsystemB.MethodB();
}
public void Operation2() {
Console.WriteLine("Facade: Operation2 executing.");
subsystemC.MethodC();
}
}
// 客户端代码
class Program {
static void Main(string[] args) {
Facade facade = new Facade();
facade.Operation1();
facade.Operation2();
}
}欢迎关注、点赞、收藏!更多系列内容可以点击专栏目录订阅,感谢支持,再次祝大家祉猷并茂,顺遂无虞!
若将文章用作它处,请一定注明出处,商用请私信联系我!