目錄
- 1. 設計模式
- 2. 設計模式的分類
- 3. 物件導向
- 4. 介面
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)