• 适配器模式


    适配器模式

     

    模式说明

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

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

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

    模式结构图

    程序示例

    说明:要被适配的日志类,两个派生类(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

  • 相关阅读:
    日区 Apple ID共享
    强大的视频跨平台视频处理软件
    百度网盘无限速
    App Store看片神器,请收好
    bootstrap 中这段代码 使bundles 失败
    C# EF中调用 存储过程并调回参数
    mvc 默认访问 Area 下控制器方法
    怎样用SQL语句查看查询的性能指标
    slice 定义和用法
    C# Regex类用法
  • 原文地址:https://www.cnblogs.com/Siny0/p/11156032.html
Copyright © 2020-2023  润新知