zoukankan      html  css  js  c++  java
  • 适配器模式

    模式定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

    模式结构:

    • Target:目标抽象类
    • Adapter:适配器类
    • Adaptee:适配者类
    • Client:客户类

    显著的优点:一个适配器可以适配多个适配者到同一目标。

    场景介绍:由于国内外插座标准不一,导致德国插座无法给我们充电。

    python实现:

    from abc import ABCMeta, abstractmethod
    
    
    class GermanySocketInterface(metaclass=ABCMeta):
        """德国插座标准"""
        @abstractmethod
        def circle_socket(self):
            """圆孔插座"""
    
    
    class ChinaSocketInterface(metaclass=ABCMeta):
        """国标插座标准"""
        @abstractmethod
        def rectangle_socket(self):
            """矩形插座"""
    
    
    class GermanySocket(GermanySocketInterface):
        def circle_socket(self):
            print("使用圆孔插座充电")
    
    
    class ChinaSocket(ChinaSocketInterface):
        def rectangle_socket(self):
            print("使用矩形插座充电")
    
    
    class GermanyHotel:
        """德国旅馆"""
        def __init__(self):
            pass
    
        def charging(self,GermanySocketInterfaceObj):
            self._GermanySocketInterfaceObj = GermanySocketInterfaceObj
            self._GermanySocketInterfaceObj.circle_socket()
    
    
    class SocketAdapter(GermanySocketInterface):
        """适配器"""
        def __init__(self,ChinaSocketInterfaceObj):
            self._ChinaSocketInterfaceObj = ChinaSocketInterfaceObj
    
        def circle_socket(self):
            self._ChinaSocketInterfaceObj.rectangle_socket()
    
    
    if __name__ == "__main__":
        # first
        # gs = GermanySocket()
        # gh = GermanyHotel()
        # gh.charging(gs)
    
        cs = ChinaSocket()
        gh = GermanyHotel()
        sa = SocketAdapter(cs)
        gh.charging(sa)
    
  • 相关阅读:
    关于Handler中Message的创建问题
    Android的组件化和模块化
    Android 和 JS交互方法初探
    synchronized相关用法简述
    关于导入高德地图 java.lang.UnsatisfiedLinkError: Couldn't load XXXfrom loader dalvik.system.PathClassLoader[DexPathLis
    圆的变化(自定义动画,及自定义UI)
    依赖注入
    PHP错误代号列表
    windows 系统错误码总结
    composer
  • 原文地址:https://www.cnblogs.com/zenan/p/10329945.html
Copyright © 2011-2022 走看看