简介
在介绍外观模式之前,先问大家一个问题,还有人记得适配器模式吗?不记得的大兄弟可以瞅一眼:适配器模式_Sean_TS_Wang的博客-CSDN博客
其中适配器的设计理念是在存在不合适的接口的情况下,将该接口封装,为用户提供一个合适的接口。
外观模式和适配器模式有些相像,也是需要为原有的接口封装一个外观交由用户操作。
但是不同的是,在适配器模式下,USB接口封装完之后还是USB接口,但是经过外观模式封装后,USB接口会变成一个手机。
因为外观模式的设计理念是,将复杂的操作封装成一个简单的界面,简化用户操作。因此在封装的过程中,会将多种接口的功能集成起来,例如USB,CPU,HDD等。
正文
通过上面这个图,我们可以清楚的认识到,对于用户来说,并不需要理解外观背后整套流程的复杂性,只需要使用外观简单操作就可以实现自己的目的,下面我们用过例子来演示一下:
class Courier:
def delivery(self):
print("我来送外卖了")
class Restaurant:
def cook(self):
print("开始炒菜了")
class ELM:
def __init__(self):
self.c = Courier()
self.r = Restaurant()
def order(self):
print("我要点外卖了")
self.r.cook()
print("菜做好了")
self.c.delivery()
print("外卖到了")
e = ELM()
e.order()
我们不需要关心饭店是如何炒菜的,也不需要关系快递小哥是如何送外卖的,我们只需要使用ELM进行下单操作就可以吃上外卖了。
总结
外观模式的核心在于简化复杂操作,因此在一些比较复杂接口操作的情况下,可以使用该模式。比较典型的应用场景就是我们常说的MVC,因此有些地方也称之为MVC模式