设计模式——外观模式

该博客介绍了外观模式在家庭影院系统中的应用,通过创建一个家庭影院类(HomePlayerFacade),将电视机、音响、灯光、游戏机等设备的操作进行整合,提供了KTV模式、游戏模式和观影模式等一键切换功能,降低了系统使用的复杂性,实现了子系统与客户端的松耦合。
摘要由CSDN通过智能技术生成

结构型模式

外观模式

定义

  • 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
# 电视机
import time


class Tv:
    def on(self):
        print("电视机启动中...")
        time.sleep(1)

    def off(self):
        print("电视机关闭中...")
        time.sleep(1)


# 音响
class VoiceBox:
    def on(self):
        print("音响启动中...")
        time.sleep(1)

    def off(self):
        print("音响关闭中...")
        time.sleep(1)


# 灯光
class Light:
    def on(self):
        print("灯光启动中...")
        time.sleep(1)

    def off(self):
        print("灯光关闭中...")
        time.sleep(1)


# 游戏机
class XBox:
    def on(self):
        print("游戏机启动中...")
        time.sleep(1)

    def off(self):
        print("游戏机关闭中...")
        time.sleep(1)


# 麦克风
class MicroPhone:
    def on(self):
        print("麦克风启动中...")
        time.sleep(1)

    def off(self):
        print("麦克风关闭中...")
        time.sleep(1)


# 投影仪
class Projector:
    def on(self):
        print("投影仪启动中...")
        time.sleep(1)

    def off(self):
        print("投影仪关闭中...")
        time.sleep(1)


# 家庭影院(外观)
class HomePlayerFacade:
    def __init__(self):
        self.vb = VoiceBox()
        self.pr = Projector()
        self.light = Light()
        self.tv = Tv()
        self.xb = XBox()
        self.mp = MicroPhone()

    # KTV模式
    def do_ktv(self):
        print('----------------->进入KTV模式<-----------------')
        self.light.on()
        self.tv.on()
        self.vb.on()
        self.mp.on()

        self.pr.off()
        self.xb.off()
        print('-------------->KTV模式可以正常使用<-------------')

    # 游戏模式
    def do_game(self):
        print('----------------->进入游戏模式<-----------------')
        self.tv.on()
        self.mp.on()
        self.xb.on()

        self.vb.off()
        self.light.off()
        self.pr.off()
        self.tv.off()
        print('-------------->游戏模式可以正常使用<-------------')

    # 观影模式
    def do_movie(self):
        print('----------------->进入观影模式<-----------------')
        self.vb.on()
        self.pr.on()

        self.mp.off()
        self.light.off()
        self.xb.off()
        self.tv.off()
        print('-------------->观影模式可以正常使用<-------------')


if __name__ == '__main__':
    hp = HomePlayerFacade()
    hp.do_movie()

在这里插入图片描述

优点:
  1. 它对业务层屏蔽了子系统组件,减少了业务层所需要处理的对象的数目,并使得子系统使用起来更加容易,通过引入外观模式,客户端代码将变得非常简单,与之关联的对象也很少
  2. 它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的业务层,只需要调整外观类即可
  3. 一个子系统的修改对其他子系统没有任何影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值