高校图书馆网站建设,企业网站的在线推广方法有,怎么样签约设计网站,网站建设项目开发一、说明
外观模式是一种结构型设计模式#xff0c;能为程序库、框架或其他复杂类提供一个统一的接口。
(一) 解决问题
简化复杂系统的接口调用
(二) 使用场景
简化复杂系统#xff1a;需要一个指向复杂子系统的直接接口#xff0c; 且该接口的功能有限时重构复杂的代码…
一、说明
外观模式是一种结构型设计模式能为程序库、框架或其他复杂类提供一个统一的接口。
(一) 解决问题
简化复杂系统的接口调用
(二) 使用场景
简化复杂系统需要一个指向复杂子系统的直接接口 且该接口的功能有限时重构复杂的代码当系统中存在复杂的代码结构并且需要重构时可以使用外观模式来重新设计接口使得系统更易于理解和维护。遗留系统的封装对于遗留系统可能存在复杂的接口和实现细节可以使用外观模式来封装这些细节提供更简单的接口给新系统使用。
二、结构 外观Facade提供了一种访问特定子系统功能的便捷方式其了解如何重定向客户端请求知晓如何操作一切活动部件。创建附加外观Additional Facade类可以避免多种不相关的功能污染单一外观使其变成又一个复杂结构。客户端和其他外观都可使用附加外观。复杂子系统Complex Subsystem由数十个不同对象构成。如果要用这些对象完成有意义的工作你必须深入了解子系统的实现细节比如按照正确顺序初始化对象和为其提供正确格式的数据。子系统类不会意识到外观的存在它们在系统内运作并且相互之间可直接进行交互。客户端Client使用外观代替对子系统对象的直接调用。
三、伪代码
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__doc__
外观模式例家庭影院系统包含多个子系统如投影仪、灯光、屏幕等。通过外观类客户端只需关注 打开/关闭观影模式无需关注内部子系统细节。
class Projector:子系统类 - 投影仪def on(self):print(- 投影仪开启)def off(self):print(- 投影仪关闭)def play(self):print(- 投影仪播放影片)class Lights:子系统类 - 灯光def dim(self):print(- 灯光调暗)def brighten(self):print(- 灯光调亮)class AudioSystem:子系统类 - 音响def on(self):print(- 音响开启)def off(self):print(- 音响关闭)def play(self):print(- 音响播放音乐)class HomeTheaterFacade:外观类 - 家庭影院外观def __init__(self):self.projector Projector()self.lights Lights()self.audio_system AudioSystem()def watch_movie(self):self.projector.on()self.lights.dim()self.audio_system.on()self.projector.play()def end_movie(self):self.projector.off()self.lights.brighten()self.audio_system.off()if __name__ __main__:打开观影模式...- 投影仪开启- 灯光调暗- 音响开启- 投影仪播放影片关闭观影模式...- 投影仪关闭- 灯光调亮- 音响关闭home_theater HomeTheaterFacade()print(打开观影模式...)home_theater.watch_movie()print()print(关闭观影模式...)home_theater.end_movie()四、优缺点
优点
简化接口外观模式提供了一个统一的接口隐藏了系统的复杂性使得客户端更容易使用系统。提高安全性外观模式可以将复杂的操作封装起来对外只暴露简单的接口提高了系统的安全性。
缺点
不符合开闭原则外观模式在添加新的子系统或者修改子系统时可能需要修改外观类不符合开闭原则。 跳转主页【Python笔记】设计模式-CSDN博客