zoukankan      html  css  js  c++  java
  • 设计模式之外观模式

    # 外观模式
    # 为子系统中的一组接口提供一个一致的界面成为外观模式,外观模式定义了一个高层接口,这个接口使得这一子系统更容易使用
    # 如下压缩模块、ORM等
    from os import path
    import logging
    
    
    class ZIPModel:
        """ZIP模块,负责ZIP文件的压缩与解压缩"""
        def compress(self):
            pass
    
        def decompress(self):
            pass
    
    
    class RARModel:
        """RAR模块,负责RAR文件的压缩与解压缩"""
        def compress(self):
            pass
    
        def decompress(self):
            pass
    
    
    class ZModel:
        """7Z模块,负责7Z文件的压缩与解压缩"""
        def compress(self):
            pass
    
        def decompress(self):
            pass
    
    class CompressModel:
        """压缩模块的外观类"""
        def __init(self):
            self.__zipModel = ZIPModel()
            self.__rarModel = RARModel()
            self.__zModel = ZModel()
    
        def compress(self, srcFilePath, dstFilePath, type):
            """根据不同的压缩类型,压缩成不同的格式"""
            extName = "." + type
            fullName = dstFilePath + extName
            if(type.lower() == "zip"):
                self.__zipModel.compress(srcFilePath, dstFilePath)
            elif(type.lower() == "rar"):
                self.__rarModel.compress(srcFilePath, dstFilePath)
            elif(type.lower() == "7z"):
                self.__zModel.compress(srcFilePath, dstFilePath)
            else:
                logging.error("Not support this format:" + str(type))
                return False
            return True
    
        def decompress(self, srcFilePath, dstFilePath):
            baseName = path.baseName(srcFilePath)
            extName = baseName.split(".")[-1]
            type = extName
            if(type.lower() == "zip"):
                self.__zipModel.decompress(srcFilePath, dstFilePath)
            elif(type.lower() == "rar"):
                self.__rarModel.decompress(srcFilePath, dstFilePath)
            elif(type.lower() == "7z"):
                self.__zModel.decompress(srcFilePath, dstFilePath)
            else:
                logging.error("Not support this format:" + str(type))
                return False
            return True
  • 相关阅读:
    111
    python 错误宝典
    Node.js Web开发:Connect
    Node.js 中的重要API:HTTP
    Node.js 中的重要API:TCP
    Node.js 中的重要API:命令行工具以及FS API 首个Node应用
    Node.js 中的JS
    Node.js 阻塞式IO与非阻塞式IO与错误处理
    Learning Vue.js 2
    A1046——入门模拟 Shortest Distance
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13040924.html
Copyright © 2011-2022 走看看