[设计模式]State模式
生活随笔
收集整理的這篇文章主要介紹了
[设计模式]State模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
《Java與模式》
?
又稱狀態對象模式。狀態模式是對象的行為模式。GOF95
一個對象的行為取決于一個或者多個動態變化的屬性,這樣的屬性叫做狀態。這樣的對象叫做有狀態的對象(stateful)。
狀態模式把一個所研究的對象的行為包裝在不同的狀態對象中,每一個狀態對象都屬于一個抽象狀態的一個子類。
狀態模式的意圖是讓一個對象在其內部狀態改變的時候,其行為也隨之改變。
模式所涉及的對象包括:
1. 抽象狀態角色,state,定義一個接口,用以封裝環境,context對象的一個特定的狀態所對應的行為。
2. 具體狀態, concreteState角色,每一個具體狀態類都實現了黃精的一個狀態所對應的行為
3. 環境角色,context,定義客戶端所感興趣的接口,并且保留一個具體狀態類的實體。
?
public class Context{private State state;public void sampleOperation(){state.sampleOperation(); } public vlid setState(State state){this.state = state; } }public interface State{void sampleOperation(); }public class ConcreteState implements State{public void sampleOperation(){} }?
在什么情況下使用狀態模式
1. 一個對象的行為依賴于它所處的狀態,對象的行為必須隨著其狀態的改變而改變。
2. 對象的某個方法里依賴于一重或多重的條件轉移語句,其中有大量的代碼。狀態模式把條件轉移語句的每一個分支都包裝到一個單獨的類里。這使得這些條件轉移分支能夠以類的方式獨立存在和演化。維護這些獨立的類也就不再影響系統的其他部分。
轉載于:https://www.cnblogs.com/hongdanning/p/7569953.html
總結
以上是生活随笔為你收集整理的[设计模式]State模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 中的 LocalSessi
- 下一篇: WPF中删除打开过的图片