日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sjms-1 面向对象

發布時間:2024/9/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sjms-1 面向对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面向對象設計

先設計架構,然后去完成相應模塊和類

設計模式:對軟件設計中普遍存在(反復出現)的各種問題,所提出的解決方案。每一個設計模式系統地命名、解釋和評價了面向對象系統中一個重要的和重復出現的設計。
“四人幫”(Gang of Four, GoF):
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
? 《設計模式:可復用面向對象軟件的基礎》

面向對象的三大特性:
封裝(數據屬性)
繼承(復用)
多態(python本是多態的語言,不用糾結)

這是一個遞進關系

接口

接口:若干抽象方法的集合。
作用:限制實現接口的類必須按照接口給定的調用方式實現這些方法;對高層模塊隱藏了類的內部實現。

不去調用pay 不會報錯

繼承抽象類時,

只有當完成抽象類的,抽象方法,才能被調用

實現了payment 接口

接口:若干抽象方法的集合。

作用:限制實現接口的類必須按照接口給定的調用方式實現這些方法;對高層模塊隱藏了類的內部實現。

不用去看內部邏輯,直接調用接口

寫底層模塊時,大量使用設計模式

面向對象設計SOLID原則

開放封閉原則:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。即軟件實體應盡量在不修改原有代碼的情況下進行擴展。
里氏替換原則:所有引用父類的地方必須能透明地使用其子類的對象。

依賴倒置原則:高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。換言之,要針對接口編程,而不是針對實現編程。

不同的支付方式不應該依賴底層的Payment,只是依賴底層的抽象方法去實現不同支付的具體細節。

from abc import ABCMeta, abstractmethod# 接口 class Payment(metaclass=ABCMeta):# abstract class@abstractmethoddef pay(self, money):passclass Alipay(Payment):def pay(self, money):print("支付寶支付%d元." % money)class WechatPay(Payment):def pay(self, money):print("微信支付%d元." % money)p = WechatPay() p.pay(100)

接口隔離原則:使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。

一個類寫多個接口,會導致繼承的類沒有實現不必要的接口而報錯

class LandAnimal(metaclass=ABCMeta):@abstractmethoddef walk(self):passclass WaterAnimal(metaclass=ABCMeta):@abstractmethoddef swim(self):passclass SkyAnimal(metaclass=ABCMeta):@abstractmethoddef fly(self):passclass Tiger(LandAnimal):def walk(self):print("老虎走路")class Frog(LandAnimal, WaterAnimal):pass

單一職責原則:不要存在多于一個導致類變更的原因。通俗的說,即一個類只負責一項職責。

總結

以上是生活随笔為你收集整理的sjms-1 面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。