Python:设计模式之门面模式

简介: Python:设计模式之门面模式

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()
    """
    汪汪汪...
    喵喵喵...
    """

参考

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


            </div>
目录
相关文章
|
前端开发
CSS:实现background-image背景图片全屏铺满自适应
CSS:实现background-image背景图片全屏铺满自适应
2650 0
|
数据采集 机器学习/深度学习 算法
阿里音乐流行趋势预测—冠军答辩(二)|学习笔记
快速学习阿里音乐流行趋势预测—冠军答辩(二)
556 0
|
存储 API UED
沃通云“时间戳认证服务”上线,提供电子数据可信时间证明
沃通云SaaS对接平台上线新功能“时间戳认证服务”,可对电子数据做时间戳认证。
2111 0
沃通云“时间戳认证服务”上线,提供电子数据可信时间证明
|
SpringCloudAlibaba NoSQL Java
1.1 w字,18 张图,彻底说透 springboot starter 机制
1.1 w字,18 张图,彻底说透 springboot starter 机制
985 1
1.1 w字,18 张图,彻底说透 springboot starter 机制
|
存储 缓存 负载均衡
从DynamoDB 2022 Paper回看Lindorm的一些设计
一向低调的AWS终于在2022年发了一篇关于DynamoDB的论文——《 Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service》。
从DynamoDB 2022 Paper回看Lindorm的一些设计
|
Kubernetes Cloud Native 数据安全/隐私保护
云原生|kubernetes |部署k8s图形化管理组件 kuboard v3
云原生|kubernetes |部署k8s图形化管理组件 kuboard v3
775 0
云原生|kubernetes |部署k8s图形化管理组件 kuboard v3
|
机器学习/深度学习 存储 分布式计算
阿里云 ODPS-Hologres刷新世界纪录,领先第二名23%
官网发布TPC-H 30,000GB标准测试最新结果,首次参加此项评测的ODPS-Hologres以QphH超2786万分的性能结果斩获全球冠军,领先第二名23%。
阿里云 ODPS-Hologres刷新世界纪录,领先第二名23%
|
Ubuntu Shell Linux
Linux高并发服务器开发环境搭建:WMare、Xshell、Xftp、VS code
Linux高并发服务器开发环境搭建:WMare、Xshell、Xftp、VS code
424 0
Linux高并发服务器开发环境搭建:WMare、Xshell、Xftp、VS code
|
弹性计算 大数据 BI
阿里云ACP认证哪个值得考?考试时间怎么安排?
对于现在的人来说,网络就是帮助自己了解世界的好帮手、就是让自己生活得更方便的好工具,这样一来,市场就需要大量的人才来满足需求,相对应的岗位也逐渐增多。
阿里云ACP认证哪个值得考?考试时间怎么安排?
|
Java 开发工具
Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!(1)
Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!
920 0
Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!(1)