結構型模式--門面模式

门面设计模式

     主要目的是提供统一子系統的高级接口,用单一接口来表示复杂的子系统,实际上它并不是封装子系统,而是对底层子系统功能进行必要组合,再将客户端的请求透過此接口再委托给包含在其下之相应子系统來處理(*处理门面所分配的工作)

UML

https://img-blog.csdn.net/20171121204714983

客户端只要与门面作交互,这样就可以轻松地与子系统进行通信并完成工作。                     

示例:

# -*- coding: UTF-8 -*-

# 门面类

class EventManager(object):

    def __init__(self):

        print("Event Manager: Let me talk to the folks")

 

    def arrage(self):        #門面類提供之接口

        self.hotelier = Hotelier()          # 引入酒店类

        self.hotelier.bookHotel() # 检查当天是不是由免费的酒店

 

        self.florist = Florist()                  # 引入鲜花类

        self.florist.setFlowerRequirements() # 用于指定要使用哪种画来装饰婚礼

 

        self.caterer = Caterer()             # 引入宴席承办人类

        self.caterer.setCuisine() # 指定酒店的饭菜类型

 

        self.musician = Musician()      # 引入婚礼音乐类

        self.musician.setMusicType() #音乐要求

 

# 酒店类

class Hotelier(object):

    def __init__(self):

        print("安排酒店结婚? --")

 

    def __isAvilable(self):

        print("免费就结,不免费不结了?")

        return True

 

    def bookHotel(self):

        if self.__isAvilable():

            print("给老子订一间房")

 

# 鲜花类

class Florist(object):

    def __init__(self):

        print("鲜花事件")

 

    def setFlowerRequirements(self):

        print("九十九朵浪漫的玫瑰吧")

 

# 宴席承办人类

class Caterer(object):

    def __init__(self):

        print("宴席承办人事件")

 

    def setCuisine(self):

        print("中国菜和印度菜将被提供")

 

# 婚礼音乐类

class Musician(object):

    def __init__(self):

        print("婚礼音乐事件")

 

    def setMusicType(self):

        print("播放《今天你要嫁给我》")

 

# 客戶端

class Client(object):

    def __init__(self):

        print("婚礼安排")

 

    def askEventManager(self):

        print("活動進行之相關流程")

        em = EventManager()

        em.arrage()

 

    def __del__(self):              #釋放方法

        print("活动完成,所有流程皆安排妥当!")

 

if __name__==’__main__’:

client = Client()

client.askEventManager()

輸出:

婚礼安排

活動進行之相關流程

Event Manager: Let me talk to the folks

安排酒店结婚? --

免费就结,不免费不结了?

给老子订一间房

鲜花事件

九十九朵浪漫的玫瑰吧

宴席承办人事件

中国菜和印度菜将被提供

婚礼音乐事件

播放《今天你要嫁给我》

活动完成,所有流程皆安排妥当!

 

最少知识原则

可减少对象之间的交互:如果类之间存在大量依赖关系,那么系统就会变得难以维护,因对系统中的任务一部分进行修改,都可能导致系统的其他部分无法被改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值