【设计模式】外观模式/门面模式(Facaed)
目录
一、问题导入
二、代码实现(仅供参考)
三、课件内容
1.为什么用(Why)
2.什么时候用(When)
3.怎么用(How)
四、优劣
1.优势
2.劣势
前言:这个设计模式比较简单,课堂只用了一分钟带过,我尽量少讲点
一、问题导入
做游戏的时候,每一帧都得干三件事:读键鼠输入、更游戏逻辑、渲染画面。
要是没有统一的办法,客户端每次都得自己写三行代码,挨个调这三个函数。不仅得记准顺序,漏一个步骤游戏就崩了,重复写还特别麻烦。
这时候就需要一个 “总按钮”—— 把这三步打包好,客户端点一下 “跑一帧”,后面的事全搞定。外观模式,就相当于这个总按钮。
二、代码实现(仅供参考)
可以看到,所有的逻辑都被整合到了on_tick函数当中,外部只需要调用on_tick即可。
#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)。
