Skip to content

接口

勤学苦练,方能成才;博览群书,才能通达。

Author: 李东阳

1.什么是接口

接口就是若干抽象方法的集合。实际上是一个类。

2.接口的作用

限制实现接口的类必须按照接口给定的调用方法实现这些方法;对高层模块隐藏了类的内部实现。(高层模块就是调用实现了接口的类)

举个例子:

拿我们常见的支付来举例子,我们平时支付使用到支付宝、微信、银行卡等等支付方式。他们的具体实现支付的方式都不同,相当于“书不同文”,这样的话国家就很难实现管理。为了统一规范,国家就会制定一套支付的标准,提供给各个公司去具体实现。

那么我们来看看用代码去怎么实现。

1、

首先是没有国家规范(也就是没有实现接口的)支付方法:

class AliPay:
    def pay(self, money):
        pass


class WechatPay:
    def pay(self, money, target_id):
        pass


a = AliPay()
a.pay(100)
w = WechatPay()
w.pay(100, 2192329581)
# 能够看出由于阿里和腾讯的pay方法实现的不同(参数不同),所以这里的pay方法调用也就不同了

2、

实现了接口的支付方法:

from abc import ABCMeta, abstractmethod


# 国家为了规范支付方法,那么就必须制定一套规范,这个规范在python中就是接口
# 抽象类
# 就是接口
class Pay(mateclass=ABCMeta):
    @abstractmethod  # 抽象方法
    def pay(self, money):  # 给出支付规范,不去实现,让子类去实现
        pass


class AliPay(Pay):
    def pay(self, money):  # 具体的代码逻辑无所谓,但是参数和返回值必须一样
        print('支付宝支付{}元'.format(money))


class WechatPay(Pay):
    # def pay(self, money, target_id):  # 由于WechatPay继承了Pay类,那么它的pay方法必须按照Pay类的pay方法去实现
    def pay(self, money):
        print('微信支付{}元'.format(money))


a = AliPay()
w = WechatPay()
a.pay(100)
w.pay(200)
# 当AliPay和WechatPay实现了Pay接口时,那么我们的高层模块就不用管阿里和腾讯具体他们的pay方法是怎么实现的,
# 高层模块只需要这个国家规范(接口是怎么写的就可以)

通过上面这个例子,相信就很容易理解了什么是接口以及接口的作用。

可以看以下视频:【Python之常用设计模式-哔哩哔哩】 https://b23.tv/VqzCqoB