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

    一、内容

    将一个类的接口转换成客户希望的另一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作

    二、角色

    • 目标接口(Target)
    • 待适配的类(Adaptee)
    • 适配器(Adapter)

    三、两种实现方式

    • 类适配器:使用多继承
    • 对象适配器:使用组合

    四、适用场景

    • 想使用一个已经存在的类,而它的接口不符合你的要求
    • (对象适配器)想使用一些已经存在的子类,但不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的接口

    五、代码示例

    from  abc import abstractmethod,ABCMeta
    class Payment(metaclass=ABCMeta):
        @abstractmethod
        def pay(self,money):
            raise NotImplementedError
    
    class Alipay(Payment):
        def pay(self, money):
            print("支付宝支付%s元"%money)
    
    
    class ApplePay(Payment):
        def pay(self, money):
            print("苹果支付%s元"%money)
    
    # =========待适配器==========
    class WechatPay:
        def huaqian(self,a,b):
            print("微信支付%s元" % (a + b))
    
    # ==========类适配器===========
    class RealWeChatPay(Payment,WechatPay):
        def pay(self,money):
            return self.huaqian(money,0)
    
    
    #===========对象适配器===========
    class PavAdepter(Payment):
        def __init__(self,payment):
            self.payment = payment
            
        def pay(self,money):
            return self.payment.huaqian(money,0)
    
    ######使用=============
    PavAdepter(WechatPay()).pay(100)
  • 相关阅读:
    css 元素垂直居中
    win7定时关机
    tabel使用总结
    Js获取当前日期时间及其它操作
    织梦dedecms自定义表单设置必填项
    css字体文本格式 鼠标样式
    css溢出文本显示省略号
    java注解学习
    自定义JSON返回字段
    Spring-解决请求中文乱码问题
  • 原文地址:https://www.cnblogs.com/morgana/p/8496322.html
Copyright © 2011-2022 走看看