研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)
2014-05-05 00:26
786 查看
一、适配器模式定义
将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作。
二、python 实现
将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作。
二、python 实现
import string import cPickle as p import datetime import os class LogModel: logId="" operateUser="" operateTime="" logContent="" def __init__(self,id,user,time,content): self.logId=id self.operateUser=user self.operateTime=time self.logContent=content def setLogId(self,id): self.logId=id def setOperateUser(self,user): self.operateUser=user def setOperateTime(self,time): self.operateTime=time def setLogContent(self,content): self.logContent=content def getLogId(self): return self.logId def getOperateUser(self): return self.operateUser def getOperateTime(self): return self.operateTime def getLogContent(self): return self.logContent def toString(self): return "logId=%s,operateUser=%s,operateTime=%s,logContent=%s" %(self.logId,self.operateUser,self.operateTime,self.logContent) class LogFileOperateApi: def readFile(self): pass def WriteLogFile(self,list): pass class LogFileOperate(LogFileOperateApi): LogFilePath="AdapterLog.log" def __init__(self,logFilePath): if (logFilePath!=None)and(len(logFilePath.strip()) > 0): self.LogFilePath=logFilePath def readFile(self): f = file(self.LogFilePath)#open(self.LogFilePath,'r') if os.stat(self.LogFilePath).st_size==0: list=[] else: list=p.load(f) f.close() return list def WriteLogFile(self,list): f = open(self.LogFilePath, 'w') p.dump(list, f) f.close() class LogDbOperateApi: def createLog(self,logModel): pass def updateLog(self,logModel): pass def removeLog(self,logModel): pass def getAllLog(self): pass class LogDbOperate(LogDbOperateApi): def createLog(self,logModel): print "Now LogDbOperate createLog , lm=%s" %(logModel) def updateLog(self,logModel): print "Now LogDbOperate updateLog , lm=%s" %(logModel) def removeLog(self,logModel): print "Now LogDbOperate removeLog , lm=%s" %(logModel) def getAllLog(self): print "Now in LogDbOperate getAllLog" class TwoDirectAdapter(LogFileOperateApi,LogDbOperateApi): fileLog=None dbLog = None def __init__(self,fileLog,dbLog): self.fileLog=fileLog self.dbLog=dbLog def createLog(self,logModel): list=self.fileLog.readFile() list.append(logModel) self.fileLog.WriteLogFile(list) def updateLog(self,logModel): list=self.fileLog.readFile() for item in list: if item.getLogId()==logModel.getLogId(): item=logModel break self.fileLog.WriteLogFile(list) def removeLog(self,logModel): list=self.fileLog.readFile() for item in list: if item.getLogId()==logModel.getLogId(): del item break self.fileLog.WriteLogFile(list) def getAllLog(self): return self.fileLog.readFile() def readFile(self): return self.dbLog.getAllLog() def WriteLogFile(self,list): for item in list: self.dbLog.createLog(item) #main function LogFilePath="AdapterLog.log" f=open(LogFilePath,'w+') f.truncate() lml=LogModel("001","admin",datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),"This is a test!").toString() list=[] list.append(lml) file_api= LogFileOperate("") db_api= LogDbOperate() file_api2=TwoDirectAdapter(file_api,db_api) db_api2=TwoDirectAdapter(file_api,db_api) db_api2.createLog(lml) allLog=db_api2.getAllLog() print "allLog:", print allLog file_api2.WriteLogFile(list) file_api2.readFile()
相关文章推荐
- python实现Adapter模式实例代码
- 解析C#设计模式编程中适配器模式的实现
- 研磨设计模式解析及python代码实现——(二)外观模式(Facade)
- 《模式——工程化实现及扩展》(设计模式C# 版)《适配器模式 Adapter》——“自我检验"参考答案
- Java设计模式之------(Adapter)适配器模式实现
- 代码设计模式之适配器模式(Adapter)
- 【设计模式】 适配器模式(Adapter Pattern)- 最易懂的设计模式解析
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- Head First 设计模式 (七)适配器模式(adapter pattern) C++实现
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 设计模式之适配器模式(Adapter Pattern)C++实现
- 23种设计模式之适配器模式(结构型,3 Adapter,c++实现)
- 设计模式实现(十三)--- 适配器模式(Adapter)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 适配器模式(Adapter Pattern)- 最易懂的设计模式解析
- 研磨设计模式之适配器模式(Adapter)-场景问题
- 设计模式-代理模式与适配器模式实现代码重用以及策略模式的使用
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 设计模式之适配器模式(Adapter)C++实现