1. 設計模式
設計模式是對軟件設計中普遍存在或反覆出向的各種問題所提出的解決方案。每一個設計模式系統系統地被命名、解釋和評價了面向對象系統中一個重要和重複出現的設計。
2. 設計模式的分類
創建型模式:工廠方法模式、抽象工廠模式、創建者模式、原型模式、單例模式。隱藏底層模塊的邏輯,關注怎麼創建對象
。
結構型模式:適配器模式、橋模式、組合模式、裝飾模式、外觀模式、享元模式、代理模式。類之間如何協同工作,應該組成什麼結構
。
行爲型模式:解釋器模式、責任鏈模式、命令模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、訪問者模式、模板方法模式。關注行爲,也就是方法,應該怎樣某些行爲
。
3. 面向對象
設計模式解決的就是面向對象中的問題。需要指導面向對象的三大特性是 封裝、繼承和多態
,封裝是把數據和方法封裝到類中,繼承是類之間複用代碼,多態在Python中默認支持的,Python是一種多態的語言。
4. 接口
接口是若干抽象方法的集合
。接口的作用是限制實現接口的類必須按照接口給定的調用方式實現這些方法,對高層模塊隱藏了類的內部實現。下面通過一個簡單的例子來加強對接口的理解:
from abc import ABCMeta, abstractmethod
# 具有抽象方法的類就是接口類,
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
"""
抽象方法,在實現的類中必須實現的方法。限制實現接口的類必須按照接口給定的調用方式實現這些方法
:param money:
:return:
"""
pass
# 不能說是繼承接口類,應該說是實現接口
class Alipay(Payment):
def pay(self, money):
"""
實現接口類中的必須實現的方法
:param money:
:return:
"""
print("支付寶支付了{0}元!".format(money))
class WechatPay(Payment):
def pay(self, money):
"""
實現接口類中的必須實現的方法
:param money:
:return:
"""
print("微信支付了%d元!" % (money))
# 下面是高層代碼,在調用的時候是看不到底層類的內部實現
a = Alipay()
w = WechatPay()
a.pay(100)
w.pay(100)