栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

设计模式-外观模式-python实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式-外观模式-python实现

参考 http://c.biancheng.net/view/1369.html

外观模式的理解

外观模式类似门户,主要的目的是方便用户能“一点用全”。其实我们开发过程中,无形之中都会用到这个模式。
比如,我们维护日志文件时,代码结构可能会如下图设计,这其实就是外观模式:

小探讨

如上图,如果我们新增加了子功能,比如是 压缩日志,这时候我们可能要更改 “维护日志” 这个类,这样就违背了开闭原则。作为解决方式,可以新增一个“门户类”。

试着写一下代码
class DeleteLogUtil:

    """删除日志工具类"""

    def del_log(self):
        print("删除日志")
class FindLog:

    """查找日志工具类"""

    def find_log(self):
        print("查找日志工具类")
class BackupLogUtil:
    """
    备份日志工具类
    """

    def backup_log(self):
        print("备份日志工具类")
# 门户类的抽象类
class baseFacade(metaclass=abc.ABCmeta):

    @abc.abstractmethod
    def help(self):
        pass

class LogUtils(baseFacade):

    def __init__(self, del_obj, find_obj, backup_obj):
        self.__del_obj = del_obj
        self.__find_obj = find_obj
        self.__backup_obj = backup_obj

    def help(self):
        print("""
        我们的功能有:
           删除日志
           备份日志
           查找日志
        """)

    def del_log(self):
        self.__del_obj.del_log()

    def find_log(self):
        self.__find_obj.find_log()

    def back_log(self):
        self.__backup_obj.backup_log()


加个抽象类,目的是起到约束的作用,约束多个门户类,相当于为多个门户定义了一个规范。不至于当类多了,出现方法名不一样但是功能一样的现象。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号