網頁 貼吧 文章 作者 工作  
網頁搜尋
 
 愛PO吧 >> 玉山投票 >> 瀏覽文章
回覆 加入我的最愛 與好友分享

Design Pattern 比對(1) Strategy and State的異同

本被文章 0 次, 共有回覆 0  
0
 
0
魔法24 基測百分百[hr]
最近買了一本Design Pattern的書,又開始重讀一次~~這時候就覺得以前的那本Design pattern好難用啊~~這時候看就覺得好容易看懂…

本篇(或著本系列)沒有什麼Design Pattern教學,純粹隻是把我當初一直沒有搞懂的地方寫出來而已~~
還有幾個很相近的pattern作介紹,相看線上教學的可以直接跳過@@

Strategy 和command都是用has-a relationship代替is-a relationship的
畫出來的UML也是完全相同。

而且其實雙方都可以作到對方的動作

而不同之處在於
State Pattern最主要會用來表示其"行為" 會一直改變的動作
而Strategy Pattern通常表示其行為是固定的,不會隨意更動。

State Pattern就像是State Diagram上面所描述的一樣,其實它是可以依據不同的state,跳到另外一個state,而且很固定的是在A state,經過B behavior後,跳到C state
動作非常相近~~

另一個特別的點是:state通常需要作很多個行為。
而strategy是可以一個behavior,隻有一個strategy的~~
(當然這邊可以用不同的實作來違反~但這就不符合該命名了)

補充:其實實作起來一點都不難,但這邊平常的思維不容易想到就是了~我們一般是把一個「實體」定義為一個Object,而行為則是Method,在這邊卻是要把行為(behavior)定義成「物件」而且行為還要有interface,腦袋沒有轉換的話…很不容易想到
比方說我們要定義一隻「烏鴨」好了,~烏鴨會「叫」、會「吃」、會「飛」,屬於鳥類
程式設計上,我們就會定義一個interface 「鳥」,和一個class「烏鴨」,烏鴨底下有「叫」、「吃」、「飛」三個行為
乙女大亂但在Strategy裡面:連「叫」、「吃」、「飛」三個都是三個物件 這平常不會想到。
而在state裡面的話:大概就是定義一個「鳥類行為」的狀態…然後裡面有「叫」、「吃」、「飛」三種動作~~不同的鳥類用不同的「狀態」~~然後如果鳥類行為常常會變動(比方說這是隻會跟別的鳥類「換身體」的烏鴨~~那麼它每次換行為的話~~就可以換State...
聽起來很怪~~烏鴨怎麼會換身體呢?所以一般因為其行為不怎麼會變動~~所以用Strategy比較好。


---
其實Design pattern裡面很多都有異同啊~~
下次來寫工廠模式的異同好了。

逛上一篇:   逛下一篇:

作者: dgmscjcwj
  (2011-12-06 20:12)
推薦文章: 將本文章推薦到【百度收藏】 將本文章推薦到【YouPush】 將本文章推薦到【udn共享書籤】 將本文章推薦到【Fiigo】書籤

 本文章共有回覆 0 篇,分 1 頁
 聲明:以上內容不代表本站立場,且內容由網友發表提供,若有爭議或違法由發表者承擔,本站將不負責連帶責任,謝謝。

 IPoBar  愛PK  愛遊戲  愛online
新手教學 客服中心 站務公告 交換連結 合作提案 關於我們
 
版權所有©ipobar Ltd., All Rights Reserved.
論壇內會員言論僅代表個人觀點,不代表本站同意其說法,本討論區不承擔由該言論所引起的法律責任