适配器模式

模式说明

适配器模式就是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

在适配器模式中,我们可以定义一个包装类,包装不兼容接口的对象,这个包装类就是适配器,它所包装的对象就是适配者。

适配器提供给客户需要的接口,适配器的实现就是将客户的请求转换成对适配者的相应的接口的引用。也就是说,当客户调用适配器的方法时,适配器方法内部将调用 适配者的方法,客户并不是直接访问适配者的,而是通过调用适配器方法访问适配者。因为适配器可以使互不兼容的类能够“合作愉快”。

模式结构图

程序示例

说明:要被适配的日志类,两个派生类(FileLog和EventLog);客户期望访问的接口类;适配器类(继承客户的期望接口,内部调用被适配的日志类)

代码:

 1 class ILogAdaptee(object):
 2     def write(self):
 3         pass
 4 
 5 class FileLog(ILogAdaptee):
 6     def write(self):
 7         print 'file log'
 8 
 9 class EventLog(ILogAdaptee):
10     def write(self):
11         print 'event log'
12 
13 class ITarget(object):
14     def writelog(self):
15         pass
16 
17 class LogAdaptor(ITarget):
18     adaptee=ILogAdaptee()
19     def __init__(self,adaptee):
20         self.adaptee = adaptee
21 
22     def writelog(self):
23         self.adaptee.write()
24 
25 if __name__=='__main__':
26     log = EventLog()
27     adapter = LogAdaptor(log)
28     adapter.writelog()

运行结果:

参考来源:

http://www.cnblogs.com/chenssy/p/3679190.html

http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

原文地址:https://www.cnblogs.com/cotton/p/3931101.html