java項目案例分析pdf java項目開發案例經典



文章插圖
java項目案例分析pdf java項目開發案例經典

文章插圖
Java中的狀態設計模式是一種軟件設計模式 , 當對象的內部狀態更改時 , 該模式允許對象更改其行為 。狀態設計模式通常用于以下情況:對象取決于其狀態 , 并且在運行期間必須根據其內部狀態更改其行為 。狀態設計模式是許多行為設計模式之一 , 因此表征了運行時難以遵循的對象之間的控制流 。狀態封裝是管理軟件變更的絕佳方法 。在本文中 , 我們將討論狀態設計模式動機的關鍵方面 , 描述狀態動機 , 提及實現該動機的關鍵參與者 , 并使用代碼示例來演示其用法 。
什么是狀態設計模式?(狀態設計模式實際示例)
在計算機網絡中 , TCP(傳輸控制協議)是一種用于定義如何建立和維護連接的標準 , 應用程序可以通過該連接交換數據 。TCP連接對象可以處于以下狀態:
1.建立狀態2.聆聽狀態3.封閉狀態
TCP(傳輸控制協議)連接對象可以基于其當前狀態來響應請求 。狀態設計模式是實現此類方案的理想方式 , 它可以描述TCP連接在每種狀態下如何表現出不同的行為 。通常 , 該方法是引入一個稱為TCPState的抽象類來表示網絡連接的狀態 。然后 , 代表已建立 , 正在偵聽和已關閉狀態的類將使用TCPState 。
【java項目案例分析pdf java項目開發案例經典】我們還可以使用另一個名為Connection的類 , 該類可用于表示TCP連接的當前狀態 。特定于狀態對象的請求由連接類委派 , 并使用狀態的實例對連接的狀態執行預期的操作 。通常 , 每當更改連接狀態時 , Connection對象都會更改其使用的狀態實例 。例如 , 假設我們有3個狀態對象實例來表示已建立狀態 , 偵聽狀態和關閉狀態 , 而Connection對象目前正在使用已建立的實例 , 并且如果發生任何更改 , 則連接對象可以將已建立的實例替換為TCPState的已關閉實例 。
Java示例中的這種狀態設計模式清楚地說明了其意圖 , 即當內部狀態更改時 , 對象可以更改其行為 。該對象似乎更改了其類 。Java中的狀態設計模式用于封裝對象基于其內部狀態的變化行為 。
Java中的狀態設計模式示例
在繼續演示Java狀態設計模式的代碼示例之前 , 讓我們首先了解什么是我們需要更好理解示例的關鍵類(參與者) 。
上下文界面
上下文定義一個接口 , 該接口維護定義當前狀態的ConcreteState子類的實例 。
狀態界面
狀態定義了一個接口 , 用于封裝與上下文的特定狀態關聯的行為 。
ConcreteState子類
如前所述 , 具體狀態子類可以被視為連接對象處于(建立 , 聆聽或關閉)狀態的實例 。它們實現了上下文狀態的行為 。
Java示例中的狀態設計模式
我們將演示游戲開始和暫停功能的高度簡化版本 。實現如下:
1. 狀態界面
狀態接口將由不同的狀態類實現 , 以根據其要求覆蓋doAction方法 。這只是不同州的藍圖 。
2. StartState類
StartState是一個具體的子類 , 代表游戲的“開始狀態” 。它覆蓋了從接口繼承的方法 , 并且還具有一個返回“開始狀態”的字符串的方法 。
3. 停止狀態類
停止狀態也是狀態接口的具體子類 。唯一的變化是它代表游戲的“暫停”狀態 。
4. 上下文(環境)
如前所述 , 上下文在我們的案例中維護了ConcreteState子類 , StopState或Start狀態的實例 。
5. 狀態設計模式演示
將startState.doAction方法傳遞給上下文對象以設置應用程序的當前狀態 。然后 , 上下文的getState方法返回當前狀態 , 并且具體狀態類內部的toString方法用于執行由當前狀態定義的所需操作 。
上下文類將特定于狀態的請求委托給ConcreteState對象(在本例中為startstate / stopstate) 。狀態對象通過上下文傳遞為訪問上下文的參數 。
在Java狀態設計模式的幫助下 , 我們獲得了什么?狀態設計模式Java示例向我們展示了它允許我們根據對象的內部狀態向其添加盡可能多的行為 。Java中的狀態設計模式將特定于狀態的行為本地化 。特定于狀態的代碼位于狀態子類中 , 這使我們更容易通過定義新的子類來添加新狀態 。這意味著我們的代碼可以輕松擴展 。即使Java中的狀態設計模式可以增加表示不同狀態的類的數量 。如果不是這種情況 , 那么我們最終將使用大型條件語句來檢查很多事情 。在Java中使用狀態設計模式時 , 我們僅需要確定對象的內部狀態是否已更改 。結論
如果我們對對象的每個狀態有不同的行為 , 則應使用Java中的狀態設計模式 。可能是我們可能需要在運行時配置轉換 。它還可以在為游戲創建GUI時派上用場 。在運行時 , 用戶可能希望為特定級別使用不同的界面 , 或者游戲本身可能根據所玩游戲的級別更改狀態 。