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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python三大特征六大原则_面向对象程序设计(Object Oriented Programming)的三大特性,六大原则...

發布時間:2023/12/4 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python三大特征六大原则_面向对象程序设计(Object Oriented Programming)的三大特性,六大原则... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三大特性

封裝、繼承、多態性

拿簡單工廠模式舉例:

namespace DesignMode_01

{

// 計算基類

public class Operation

{

private double _numberA = 0;

private double _numberB = 0;

public double NumberA { get => _numberA; set => _numberA = value; }

public double NumberB { get => _numberB; set => _numberB = value; }

public virtual double GetResult()

{

double result = 0;

return result;

}

}

// 加法類

public class OperationAdd : Operation

{

public override double GetResult()

{

double result = 0;

result = NumberA + NumberB;

return result;

}

}

// 減法類

public class OperationSub : Operation

{

public override double GetResult()

{

double result = 0;

result = NumberA - NumberB;

return result;

}

}

// 工廠類:生產不同類的實例化對象

public class OperationFactory

{

public static Operation CreateOperate(string operate)

{

Operation oper = null;

switch (operate)

{

case "+":

oper = new OperationAdd();

break;

case "-":

oper = new OperationSub();

break;

}

return oper;

}

}

// 當編譯器遇到方法調用時,它首先在類型的實例方法中查找匹配項。如果找不到匹配項,它將搜索為該類型定義的所有擴展方法,并綁定到找到的第一個擴展方法。

public static class MyExtensions

{

public static int Count(this String str)

{

return str.Split(new char[] { ' ', '.', '?' },

StringSplitOptions.RemoveEmptyEntries).Length;

}

}

// 操作界面類

class Program

{

static void Main(string[] args)

{

Operation operation;

operation = OperationFactory.CreateOperate("+");

operation.NumberA = 1;

operation.NumberB = 2;

double result = operation.GetResult();

// 調用擴展方法

string s = "Hello Extension Methods";

s.Count();

}

}

}

封裝:創建計算基類、工廠類和界面類讓業務邏輯與界面邏輯分開,讓它們之間的耦合度下降。

繼承:加法減法類派生計算基類。

多態性:定義GetResult()虛方法,讓派生類對同一個方法產生不同實現。多態性的具體實現包括重載和重寫。

六大原則

單一職責原則:就一個類而言,應該僅有一個引起它變化的原因。

比如:

你把業務邏輯、數據庫訪問的sql語句什么都放在一個控制器里,這就意味著,無論什么需求要來,你都需要更改這個控制器,這其實是很糟糕的,維護麻煩,復用不可能,也缺乏靈活性。這個時候就可以把程序分為服務層、倉儲層,服務層專門用來處理業務邏輯,倉儲層專門用處理數據庫訪問的sql語句。

boss直聘前端頁面一個搜索文本框,可以讓你選擇不同行業、不同月薪的分類按鈕,按分類進行檢索,這也是體現了單一職責思想。

修電腦,顯然內存壞了,不應該成為更換CPU的理由,他們各自的職責時明確的。當然,軟件設計真正要做的許多內容,就是發現職責并把那些職責相互分離。如果你能夠想到多于一個的動機去改變一個類,那么這個類就具有多于一個的職責,就應該考慮類的職責分離。

開發-封閉原則:就是軟件實體(類、模塊、函數等等)應該可以擴展,但是不可以修改。即面對需求,對程序的改動是通過增加新代碼進行,而不是更改現有的代碼。但是,絕對的對修改關閉是不可能的。在我們最初編寫代碼時,假設變化不會發生。當變化發生時,我們就創建抽象來隔離以后發送的同類變化。

例如:

把一個加法程序,都在一個client類中完成,如果要加一個減法功能,增加功能就需要修改原來的這個類,這就違背了開放-封閉原則。可以通過增加一個抽象的運算類,通過一些面向對象的手段,如繼承、多態等來隔離具體加法、減法與client耦合。如果又要增加除法功能,你就不需要再去更改client以及加法減法的類了,而是增加乘法和除法子類就可。

中國的一國兩制思想,原有的中國社會主義制度不能修改,為了回歸大局,通過增加一種制度又何嘗不可。

C# 中的擴展方法,你不能修改微軟的源碼,但是微軟給你提供了擴展方法,你可以通過新增擴展方法來實現需求。

電腦內存不夠只要插槽足夠就可以添加,硬盤不夠可以用移動硬盤等。

依賴倒轉原則:說白了就是針對接口編程,不要對實現編程。

例如:

我們的服務層、倉儲層都是針對接口編程。只要倉儲層接口不變,換任何數據庫,都不影響服務層的業務邏輯。

里氏替換原則:子類型必須能夠替換掉他們的父類型。只有當子類可以替換掉父類,軟件單位的功能不受到影響時,父類才能正真被復用,而子類也能夠在父類的基礎上增加新的行為。

例如:

為什么要單獨在倉儲層來引入通用的ORM持久化接口,是因為,降低耦合,如果以后想要換成EF或者Deper,只需要修改Repository具體的實現類就行了,其他都不需要修改。

接口隔離原則: 客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。根據接口隔離原則,當一個接口太大時,我們需要將它分割成一些更細小的接口,使用該接口的客戶端僅需知道與之相關的方法即可。

迪米特法則:如果兩個類不必彼此直接通信,那么這兩個類就不要應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。首先強調的前提是在類的結構設計上,每一個類都應當盡量降低成員的訪問權限,也就是說,一個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。根本思想是強調了類之間的松耦合。

例如:

IT部是抽象的,哪怕里面的人離職換了新人,我的電腦出問題了也還是可以找IT部解決,而不需要認識其中的同事,純靠關系幫忙了。就算需要認識,我也只要認識IT部的主管就可以了,由他來安排工作。

總結

以上是生活随笔為你收集整理的python三大特征六大原则_面向对象程序设计(Object Oriented Programming)的三大特性,六大原则...的全部內容,希望文章能夠幫你解決所遇到的問題。

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