目录
前言:这个设计模式比较简单,课堂只用了一分钟带过,我尽量少讲点
一、问题导入
做游戏的时候,每一帧都得干三件事:读键鼠输入、更游戏逻辑、渲染画面。
要是没有统一的办法,客户端每次都得自己写三行代码,挨个调这三个函数。不仅得记准顺序,漏一个步骤游戏就崩了,重复写还特别麻烦。
这时候就需要一个 "总按钮"------ 把这三步打包好,客户端点一下 "跑一帧",后面的事全搞定。外观模式,就相当于这个总按钮。
二、代码实现(仅供参考)
可以看到,所有的逻辑都被整合到了on_tick函数当中,外部只需要调用on_tick即可。
cpp
#pragma once
#include<iostream>
namespace _FacadePattern
{
class TickUpdate
{
public:
void on_event()
{
std::cout << "键鼠输入读入" << std::endl;
}
void on_update()
{
std::cout << "游戏更新" << std::endl;
}
void on_render()
{
std::cout << "游戏渲染" << std::endl;
}
void on_tick()
{
on_event();
on_update();
on_render();
}
};
void test()
{
TickUpdate *tick=new TickUpdate();
tick->on_tick();
//内存释放
delete tick;
}
}
三、课件内容
1.为什么用(Why)
(1)为子系统中的一组接口提供一个一致的接口。
(2)定义一个更高级别的接口,使子系统更易于使用。
(3)降低访问复杂系统内部子系统的复杂性,简化客户端之间的接口。
2.什么时候用(When)
(1)为外部访问复杂模块或子系统提供一个接口。
(2)降低单个代码质量对整个项目的影响和风险。
(3)子系统相对独立 ------ 对其子系统的外部访问仅需进行黑盒操作。
3.怎么用(How)
(1)用更简单的接口包装复杂的子系统。
(2)在客户端和复杂系统之间添加另一层,用于处理调用顺序、依赖关系等。
四、优劣
1.优势
(1)降低系统间的相互依赖。
(2)提升灵活性。
(3)增强安全性。
2.劣势
不符合开闭原则(OCP)。