如何将多个子系统、子任务综合起来面向用户,方便使用呢?
外观模式!
代码实现
#include<vector>
template<typename G = Generator,
typename S = Splitter,
typename V = Verifier>
struct MagicSquareGenerator {
vector<vector<int>>generate(int size) {
G g;
S s;
V v;
vector<vector<int>>square;
do {
square.clear();
for (int i = 0; i < size; ++i)
square.emplace_back(g.generate(size));
} while (!v.verify(s.split(square)));
return square;
}
};
int main()
{
MagicSquareGenerator a;
auto data = a.generate(3);
return 0;
}
总结
外观模式是将复杂的子系统向外界提供接口的方式,使用户能够方便的使用我们的开发接口,同时也允许高级用户针对特定需求利用外观模式进行附加功能的开发与调整