原创 大話設計模式:第13章 建造者模式

第13章:建造者模式 建造者模式 建造者(builder)模式:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 建造者模式又稱爲生成器模式。使用建造者模式時,用戶只需指定需要建造的類型,而無需知道具

原创 大話設計模式:UML類圖

UML類圖 類圖(例如:動物):類(class)用矩形框表示,類圖分三層,第一層是類名,如果是抽象類,則用斜體顯示;第二層是類的特性,通常是字段和屬性;第三層是類的操作,通常是方法或行爲。前置符號:+表示public;-表示pr

原创 大話設計模式:第12章 外觀模式

第12章:外觀模式 外觀模式 外觀模式(facade):爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高級接口,這個接口使得這一子系統更加容易使用。 四個子系統的類 外觀類 客戶端代碼 外觀模式示例 任務:股

原创 大話設計模式:第10章 模板方法模式

第10章:模板方法模式 重複 = 易錯 + 難改 模板方法模式 既然用了繼承,並且肯定這個繼承有意義,就應該要成爲子類的模板,所有重複的代碼都應該要上升到父類去,而不是讓每個子類都去重複。 當要完成在某一細節層次一致的一個過程或一

原创 大話設計模式:第11章 迪米特法則

第11章:迪米特法則 迪米特法則 迪米特法則(law of Demeter,LoD):如果兩個類不必彼此一直接通信,那麼這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第二者轉發這個調

原创 大話設計模式:第9章 原型模式

第9章:原型模式 原型模式 原型模式(prototype):用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。 原型模式其實就是從一個對象再創建另外一個可定製的對象,而且不需知道任何創建的細節。 Prototy

原创 大話設計模式:第8章 工廠方法模式

第8章:工廠方法模式 簡單工廠 v.s. 工廠方法 簡單工廠模式 優點:工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態實例化相關的類,對於客戶端來說,去除了與具體產品的依賴。 侷限:增加功能時,需要修改原有的工廠類

原创 大話設計模式:第7章 代理模式

第7章:代理模式 代理模式 代理模式(Proxy):爲其他對象提供一種代理以控制對這個對象的訪問。 Subject類,定義了RealSubject和Proxy的共用接口,這樣就在任何使用RealSubject的地方都可以使用

原创 大話設計模式:第6章 裝飾模式

第6章:裝飾模式 裝飾模式 裝飾模式(decorator):動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更爲靈活。 Component定義一個對象接口,可以給這些對象動態地添加職責。Concrete

原创 大話設計模式:第4章 開放-封閉原則

第4章:開放-封閉原則 開放-封閉原則 開放-封閉原則(open closed principle,OCP):軟件實體(類、模塊、函數等),應該可以擴展,但是不可修改。 這個原則有兩個特徵:對於擴展是開放的(open for

原创 大話設計模式:第5章 依賴倒轉原則

第5章:依賴倒轉原則 依賴倒轉原則 面向對象關係要求強內聚、鬆耦合 依賴倒轉原則(依賴倒置原則,dependence inversion principle,DIP): 高層模塊不應該依賴低層模塊。兩個都應該依賴抽象。 抽象不

原创 大話設計模式:第3章 單一職責原則

第3章:單一職責原則 單一職責原則(single responsibility principle,SRP):就一個類而言,應該僅有一個引起它變化的原因。 如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可

原创 大話設計模式:第2章 策略模式

第2章:策略模式 策略模式 面向對象的編程,並不是類越多越好,類的劃分是爲了封裝,但分類的基礎是抽象、具有相同屬性和功能的對象的抽象集合纔是類。 策略模式(strategy):定義了算法家族,分別封裝起來,讓它們之間可以互相替換,

原创 大話設計模式:第1章 簡單工廠模式

第1章:簡單工廠模式 面向對象 面向對象(object oriented)三大特性:封裝、繼承、多態 複製 v.s. 複用,緊耦合 v.s. 鬆耦合 儘可能避免重複代碼,將業務邏輯與界面邏輯拆分 簡單工廠模式:工廠負責實例化對象的

原创 線性規化 - 運輸問題

線性規化 - 運輸問題(transportation problem) 運輸問題:有兩個城市北京和上海,分別擁有300件衣服和500件衣服,另外有三個城市分別是1,2,3分別需要200,300,250件衣服。現在需要把衣服從北京和