接口¶
勤学苦练,方能成才;博览群书,才能通达。
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