java的狀態模式
㈠ java設計模式之狀態模式
狀態模式是設計模式中的行為型模式,主要解決內在狀態的改變引起行為改變的問題。以下是關於狀態模式的詳細解答:
核心角色:
- 抽象狀態類:定義一個介面以封裝與上下文的狀態相關的行為。
- 具體狀態:每一子類實現與上下文一個狀態相關的行為。
- 上下文:維護一個具體狀態實例,決定當前狀態。
核心方法:
- 上下文抽象方法:用於處理請求,通常會委託給當前狀態對象處理。
- 狀態抽象方法:在抽象狀態類中定義,由具體狀態類實現,實現不同狀態對應的行為。
特點:
- 狀態是系統固有的:狀態模式的重點在於狀態是系統內部固有的,其改變不由外部控制。
- 環境角色職責復雜:環境角色不僅負責行為委託,還需登記狀態變化,與具體狀態協作完成狀態切換。
- 封裝狀態變化:通過封裝狀態變化,對外暴露行為,有效地封裝狀態變化邏輯,減少內部演算法的對外暴露。
應用場景:
- 廣泛應用於各種狀態變化頻繁的場景,如審批工作流、訂單狀態管理等。
- 以審批流程為例,不同審批人對應不同狀態,實現流程的靈活控制。
優缺點:
- 優點:封裝轉換規則,易於定義和管理狀態。
- 缺點:引入額外類導致系統復雜度增加,且對新增狀態支持不友好。
與策略模式的區別:
- 狀態控制:狀態模式強調狀態是系統固有的,其改變不由外部控制;策略模式則依賴於外界給定的策略,系統只負責執行。
- 環境角色職責:狀態模式中的環境角色職責更為復雜,不僅負責行為委託,還需登記狀態變化;策略模式中的環境角色相對簡單,主要負責執行策略。
- 解決問題側重點:狀態模式側重於解決狀態改變引起行為改變的問題;策略模式側重於提供多種演算法或行為,並根據需要選擇執行。
通過以上解答,可以更加深入地理解狀態模式的概念、特點、應用場景以及與策略模式的區別。
㈡ java中常用到得設計模式有哪幾種(java常用的設計模式及應用場景)
一共23種設計模式!
按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。
創建型模式用來處檔滲理對象的創建過程,主要包含以下5種設計模式:
工廠方法模式(FactoryMethodPattern)
抽象工廠模式(AbstractFactoryPattern)
建造者模式(BuilderPattern)
原型模式(PrototypePattern)
單例模式(SingletonPattern)
結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
適配器模式(AdapterPattern)
橋接模式(BridgePattern)
組合模式(CompositePattern)
裝飾者模式(DecoratorPattern)
外觀模式(FacadePattern)
享元模式(FlyweightPattern)
代理模式(ProxyPattern)
行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
責任鏈模式(行悉脊ChainofPattern)
命令模式(CommandPattern)
解釋器模式(InterpreterPattern)
迭代器模式(IteratorPattern)
中介者模式(MediatorPattern)
備忘錄模式(MementoPattern)
觀察者模陸旁式(ObserverPattern)
狀態模式(StatePattern)
策略模式(StrategyPattern)
模板方法模式(TemplateMethodPattern)
訪問者模式(VisitorPattern)
推薦你一本好書:《軟體秘笈:設計模式那點事》,裡面講解的23中設計模式例子很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!網路裡面搜「設計模式」,第一條中設計模式網路中就有首推該圖書,瀏覽量在20幾萬以上的,不會錯的。好東西大家一起分享!
祝你早日學會設計模式!