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)的三大特性,六大原则...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: #时间预测算法_【时间序列】时序预测竞赛
- 下一篇: bigint hive java类型_详