看到這裡有個狀態模式我就比較激動了,前面面試的時候被這個設計模式虐得太慘了,各種不會。正好這裡學習一下,看個例子。
class actor
} public void act()
}class sadactor extends actor
}class stage
public void performplay()
}public class transmogrify
}
輸出結果
sadactor
在public void change()方法中sadactor物件的引用被actor代替,然後performplay()產生的行為也隨之改變即act方法變了。
感覺就像是狀態切換一樣,所有叫做狀態模式
一條通用準則:用繼承表達行為間的差異,並用字段表達狀態上的變化
設計模式之狀態模式
一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...
設計模式之 狀態模式
gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...
設計模式之狀態模式
定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...