设计模式之外观模式

Posted loveprogramme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之外观模式相关的知识,希望对你有一定的参考价值。

# 外观模式
# 为子系统中的一组接口提供一个一致的界面成为外观模式,外观模式定义了一个高层接口,这个接口使得这一子系统更容易使用
# 如下压缩模块、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

 

以上是关于设计模式之外观模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之- 外观模式(Facade Pattern)

Java设计模式之外观模式(facade)

设计模式之外观模式

设计模式之外观模式 Facade

设计模式之代理模式适配器模式和外观模式

java 之 外观模式(大话设计模式)