網頁

顯示具有 Design Patterns 標籤的文章。 顯示所有文章
顯示具有 Design Patterns 標籤的文章。 顯示所有文章

2012年9月30日 星期日

State Pattern 狀態模式

今天想跟大家分享的設計模式叫做”State Pattern” 狀態模式,最近在工作上遇到一個案例,我覺得就非常適合使用這個模式去重構,當我今天看到在某個物件中,有過多的if….else if…..or Switch case…或許你可以試著思考是否可以使用State Pattern去把過多的條件敘述簡化掉,在我遇到的案例中,我發現了像下列的程式碼:

2012年6月26日 星期二

Strategy 策略模式

何謂策略模式:

定義各別的演算法並將其封裝起來,讓他們之間可以互相替換,此模式讓演算法的變動,不會影響使用演算法的程式。

image_thumb1

由上面的UML圖可以得知Strategy類別只是一個演算法介面,而ConcreteStrategyA、B、C是真正實作的演算法內容,而Context是真正使用演算法的類別。

 

從上面的UML圖我們更可以發現兩個重點:

 

※ 寫程式是針對介面撰寫,而不是針對實踐方式。

 

※ 將程式中可能需要變動之處,取出並封裝起來,以後便可以輕易低擴充此部分,而不影響不需要更動的其他部分

 

在未來我們可以增加ConcreteStrategyD,E,F而不會去影響原有的程式功能。

初談設計模式

40112-59_thumb1

設計模式是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。設計模式並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案。

 

物件導向設計模式通常以類別物件來描述其中的關係和相互作用,但不涉及用來完成應用程式的特定類別或物件。

 

求學期間,老師們教學生的是能夠把功能達成為第一原則,對於Code的品質要求並沒有那麼的高。

 

在進入業界之後,除了要把該做的功能達成,更要把事情做好,當然也包括程式設計這件事情。在教育訓練的期間,是以這本書為主要參考書。此書的內容以Java為主,因為Java對當時的我來說是個陌生的語言,所以就照著此書的範例把它改成C++的版本。