外观模式是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个统一的接口。
简化复杂系统的接口调用
- #!/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()