設計模式1(對象)

面向對象設計模式與原則:新增類型(員工)不會影響原來類型(員工)的實現代碼。

封裝:隱藏內部實現;

繼承:複用現有代碼;

多態:改寫對象行爲;

 

對象:1.(概念)是某種擁有責任的抽象。

          2.(規格)是一系列可以被其他對象使用的公共接口。

          3.(實現)封裝了代碼和數據。

 

設計模式常規:

1、針對接口編程,而不是針對實現編程。

2.優先使用對象組合,而不是類繼承。

3、封裝變化點。

4、使用重構得到模式——設計模式的應用不易先入爲主。(源代碼就是設計)

 

設計模式原則:

1.單一職責。

2.放開——封閉原則(ocp)。Open-Closed Principle 原則講的是:一個軟件實體應當對擴展開放,對修改關閉。

3.Liskow替換原則(子類必須能替換基類)

4.依賴倒置原則。(依賴倒置(Dependence Inversion Principle)原則講的是:要依賴於抽象,不要依賴於具體。
簡單的說,依賴倒置原則要求客戶端依賴於抽象耦合。原則表述:
抽象不應當依賴於細節;細節應當依賴於抽象;
要針對接口編程,不針對實現編程。)

5.接口隔離原則((Interface Segregation Principle )講的是:使用多個專門的接口比使用單一
的總接口總要好。換而言之,從一個客戶類的角度來講:一個類對另外一個類的依賴性應當是建
立在最小接口上的。
過於臃腫的接口是對接口的污染。不應該強迫客戶依賴於它們不用的方法。)

 

實例:(結構化編程和對象編程)

結構化做法
1。獲得人事系統中所有可能的員工類型
2。根據不同的員工類型所對應的不同的薪金制度,計算其工資
enum EmployeeType{
Engineer;
Sales;
Manager;

}
//  計算工資程序
If ( type==EmployeeType.Engineer) {
……
}
else if (type== Employeetype.Sales) {
……
}

 

面向對象設計
1 。根據不同的員工類型設計不同的類,並使這些類繼承自一個
Employee抽象類,其中有一個抽象方法GetSalary。
2。在各個不同的員工類中,根據自己的薪金制度,重寫(override )
GetSalary方法。
abstract class Employee{

public abstract int GetSalary();
}
class Engineer: Employee{

public override int GetSalary() {
……
}
}
class Sales: Employee{

public override int GetSalary() {
……
}
}
//  顯示工資程序
Employee e=
emFactory.GetEmployee(id);
MessageBox.Show( e.GetSalary());

 

總結:面向對象做法只需要在新的文件裏增添新的員工類,讓其繼承自Employee抽象
類,並重寫GetSalary()方法,然後在EmployeeFactory.GetEmployee
方法中根據相關條件,產生新的員工類型就可以了。其他地方(顯示
工資程序、Engineer類、Sales類等)則不需要做任何改變。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章