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