摘要:狀態模式一狀態模式定義允許一個對象在其內部狀態改變時改變它的行為這個對象看起來像是改變了其類二具體實現創建抽象狀態接口創建容器創建具體狀態類調用輸出三優缺點優點封裝了轉換規則擴展性強,易于添加新的狀態對象或行為缺點狀態過多導致類膨脹四源碼
狀態模式
一. 狀態模式 1.1 定義允許一個對象在其內部狀態改變時改變它的行為.這個對象看起來像是改變了其類.
二. 具體實現 2.1 創建抽象狀態接口public interface IState { void print(Context context); }2.2 創建容器
public class Context { private IState state; public Context(){ this.state = null; } public void setState(IState state){ this.state = state; System.out.println("setState : " + state.getClass().getSimpleName()); } public void print(){ state.print(this); } }2.3 創建具體狀態類
public class StateA implements IState { @Override public void print(Context context) { System.out.println("StateA print ..."); context.setState(new StateB()); } } public class StateB implements IState { @Override public void print(Context context) { System.out.println("StateB print ..."); context.setState(new StateA()); } }2.5 調用
public static void main(String[] args) { Context context = new Context(); context.setState(new StateA()); context.print(); context.print(); }2.6 輸出
setState : StateA StateA print ... setState : StateB StateB print ... setState : StateA三. 優缺點 3.1 優點
封裝了轉換規則.
擴展性強,易于添加新的狀態對象或行為.
3.2 缺點狀態過多導致類膨脹.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69727.html
摘要:要注意這里的一個狀態行為因為這個詞是狀態模式中最重要的個概念。考慮到這點,聰明的在中推出了狀態機這個偽函數,能夠幫助我們快速實現狀態化。這里就引入了狀態機這個概念,以及和他對應的狀態表。 ?首先聲明一點,這個模式是我目前見過最好用(本人觀點),但是也是最難理解的一個(本人觀點)。 所以大家需要做好心理準備,如果,對這個模式沒有特別強烈的需求,比如: 我有一個Button,我按次數點擊它...
摘要:狀態模式對于對象內部的狀態,允許其在不同的狀態下,擁有不同的行為,對狀態單獨封裝成類。通過什么來舉例子呢設計到多狀態,不同狀態下各自具有不同行為的東西,而且理解起來相對容易的。下篇更新適配器模式 目錄 狀態模式 為什么使用狀態模式? 應用實例 狀態模式 狀態模式,顧名思義,肯定是和狀態有關,進一步思考,我們在討論的是設計模式,設計模式中的重要原則對變化的進行封裝,順著這個思路去想,...
摘要:前言當代碼中出現多重語句或者語句時。代替多重分支這個情況的代替方式是可以為晴天時處理邏輯下雨時處理邏輯陰天時處理邏輯策略模式使用策略模式可以代替多重和語句,讓代碼維護變得更加簡單。狀態模式允許一個對象在其內部狀態改變的時候改變其行為。 前言 當代碼中出現多重if-else語句或者switch語句時。弊端之一:如果這樣的代碼出現在多處,那么一旦出現需求變更,就需要把所有地方的if-els...
摘要:什么是狀態模式狀態模式對象行為是基于狀態來改變的。原文地址設計模式手冊之狀態模式優缺點優點封裝了轉化規則,對于大量分支語句,可以考慮使用狀態類進一步封裝。 1. 什么是狀態模式? 狀態模式:對象行為是基于狀態來改變的。 內部的狀態轉化,導致了行為表現形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設計模式手冊(16篇):GitHub地址 博...
摘要:什么是狀態模式狀態模式對象行為是基于狀態來改變的。原文地址設計模式手冊之狀態模式優缺點優點封裝了轉化規則,對于大量分支語句,可以考慮使用狀態類進一步封裝。 1. 什么是狀態模式? 狀態模式:對象行為是基于狀態來改變的。 內部的狀態轉化,導致了行為表現形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設計模式手冊(16篇):GitHub地址 博...
閱讀 2168·2021-11-24 09:39
閱讀 2781·2021-07-29 13:49
閱讀 2322·2019-08-29 14:15
閱讀 2233·2019-08-29 12:40
閱讀 3312·2019-08-26 13:42
閱讀 632·2019-08-26 12:13
閱讀 2065·2019-08-26 11:41
閱讀 3345·2019-08-23 18:32