Python:设计模式之门面模式

举报
彭世瑜 发表于 2021/08/13 23:52:18 2021/08/13
【摘要】 1、结构型模式 描述如何将对象和类组合成更大的结构 -类模式:通过继承来描述抽象,从而提供更有用的程序接口 -对象模式:描述了如何将对象联系起来,从而组合成更大的对象 2、结构型模式例子: 适配器模式:将一个接口转换成客户希望的另一个接口,根据客户端的不同需求来匹配不同类的接口 桥接模式:将对象的接口与其实现进行解耦,使得两者可以独立工作 装饰器模式:允许在运行时或以...

1、结构型模式
描述如何将对象和类组合成更大的结构
-类模式:通过继承来描述抽象,从而提供更有用的程序接口
-对象模式:描述了如何将对象联系起来,从而组合成更大的对象

2、结构型模式例子:
适配器模式:将一个接口转换成客户希望的另一个接口,根据客户端的不同需求来匹配不同类的接口
桥接模式:将对象的接口与其实现进行解耦,使得两者可以独立工作
装饰器模式:允许在运行时或以动态方式为对象添加职责,通过接口给对象添加某些属性

3、门面模式facade
(1)为子系统中的一组接口,提供了一个统一的接口,
并定义一个高级接口来帮助客户端通过更加简单的方式来使用子系统
(2)门面所解决的问题,如何用单个接口对象表示复杂的子系统。
实际上并不是封装子系统,而是对底层子系统进行组合
(3)促进实现与客户端的解耦

4、门面模式3个主要参与者
(1)门面:将一组复杂的子系统封装起来,从而为外部世界提供一个舒适的外观
(2)系统:代表一组不同的子系统,使整个系统混杂在一起,难以观察或使用
(3)客户端:与门面交互,轻松的与子系统进行通信并完成工作,不必担心系统的复杂性

5、最少知识原则:减少对象之间的交互

6、代码示例

# -*- coding: utf-8 -*-


# 子系统
class Dog(object): def say_hi(self): print("汪汪汪...")


class Cat(object): def say_hi(self): print("喵喵喵...")


# 门面
class Zoo(object): def animal_say_hi(self): dog = Dog() dog.say_hi() cat = Cat() cat.say_hi()


# 客户端
class Visitor(object): def visit(self): zoo = Zoo() zoo.animal_say_hi()


if __name__ == '__main__': visitor = Visitor() visitor.visit() """ 汪汪汪... 喵喵喵... """

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

参考
《Python设计模式第2版》第四章 门面模式

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/91949544

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。