例項:計算機控制程式(if與switch的效率問題)
印刷術——活字印刷術:可維護,可復用,可擴充套件,靈活性好。
物件導向的好處:通過封裝、繼承、多型把程式的耦合度降低。
業務的封裝:業務邏輯與介面邏輯分開,讓它們之間的耦合度下降。
聚合關係:聚合表示一種弱的「擁有」關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分。(雁群和大雁)
合成關係:合成表示一種強的「擁有」關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。(鳥和翅膀)
public abstract class human
我們定義了乙個被稱為"人類"的抽象基類."去撒尿"這個方法是抽象的,因為對於整個人類來說沒有乙個統一的撒尿方法.只有當你具體地討論這個人是男人還是女人的時候,"撒尿"這個方法才有具體的含義.與此同時,"人類"也是乙個抽象的概念-不可能有乙個既不是男人也不是女人的"人類"存在.當我們討論乙個人的時候,ta要麼是個男人,要麼是個女人.
public class male extends human
}public class female extends human
}
現在我們有了更具體的關於男人和女人的類定義:男人站著撒尿,.他們都是人類的繼承類,但是他們有不同的撒尿方法.
多型最完美的展現在於當我們試圖讓一屋子的人都去撒尿的時候:
public static void main(string args)
}
得到的結果是
實現stand up
sit down
sit down
stand up
stand up
...
我們將建立乙個 shape 介面和實現 shape 介面的實體類。下一步是定義工廠類 shapefactory。
factorypatterndemo,我們的演示類使用 shapefactory 來獲取 shape 物件。它將向 shapefactory 傳遞資訊(circle / rectangle / square),以便獲取它所需物件的型別。
步驟 1:建立乙個介面
public inte***ce shape
步驟 2:建立實現介面的實體類
public class rectangle implements shape
}public class square implements shape
}public class circle implements shape
}
步驟 3:建立乙個工廠,生成基於給定資訊的實體類的物件。
public class shapefactory
if(shapetype.equalsignorecase("circle")) else if(shapetype.equalsignorecase("rectangle")) else if(shapetype.equalsignorecase("square"))
return null;
}}
步驟4:使用該工廠,通過傳遞型別資訊來獲取實體類的物件。
public class factorypatterndemo
}
步驟 5:驗證輸出
inside circle::draw() method.
inside rectangle::draw() method.
inside square::draw() method.
例項:商場收銀軟體
物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。
大話設計模式
大話設計模式 這是乙個中國人寫的書,準確的說是部落格。經常聽到有人說國人寫不出好書,而說的人自己有夢想寫出一些書,那言外之意 有些書,是好書,我們可以好好精細研讀。有些書,寫的不是那麼精彩,我們可以借鑑學習。而能出版的書 一些不常見的出版社除外 總有值得我們去學習的東西。其實熟的好與壞很多時候不在於...
大話設計模式 原型設計模式
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。主要解決 在執行期建立和刪除原型。如何解決 利用已有的乙個原...
大話設計模式 組合模式
abstract class component public abstract function add component c public abstract function remove component c public abstract function display depth 葉...