日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式之状态

發布時間:2023/12/4 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式之状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

狀態模式介紹

狀態模式是一種行為設計模式,讓你能在一個對象的內部狀態變化時改變其行為,使其看上去就像改變了自身所屬的類一樣。

根據狀態不同,行為也不同

狀態模式描述的是一個行為下的多種狀態變更,比如我們最常見的一個網站的頁面,在你登錄與不登錄時,用戶看到的頁面是不同的,而這種登錄與不登錄就是我們通過改變狀態而讓整個行為發生了變化。

狀態模式建議為對象的所有可能狀態新建一個類,然后將所有狀態的對應行為抽取到這些類中。

原始對象被稱為上下文,它并不會自行實現所有行為,而是會保存一個指向表示當前狀態對象的引用,且將所有與狀態相關的工作委派給該對象。

狀態模式結構

  • 1、上下文

保存對于一個具體狀態對象的引用,并會將所有與該狀態相關的工作委派給它。上下文通過狀態接口與狀態對象交互,且會提供一個設置器用于傳遞新的狀態對象。

  • 2、狀態接口

會聲明特定于狀態的方法,這些方法應能被其他所有具體狀態所理解,因為你不希望某些狀態所擁有的方法永遠不會被調用。

  • 3、具體狀態

會自行實現特定于狀態的方法。為了避免多個狀態中包含相似代碼,你可以提供一個封裝有部分通用行為的中間抽象類。

  • 4、業務邏輯

上下文和具體狀態都可以設置上下文的下個狀態,并可通過替代連接到上下文的狀態對象來完成實際的狀態轉換。

狀態模式的應用場景

  • 對象需要根據自身當前狀態進行不同行為,同時狀態的數量非常多且與狀態相關的代碼會頻繁變更的話。

  • 某個類需要根據成員變量的當前值改變自身行為,從而需要使用大量的條件語句時。

  • 當相似狀態和基于條件的狀態機轉換中存在許多重復代碼時,可使用狀態模式。

實現方式

  • 確定那些類是上下文,聲明狀態接口。

  • 為每個實際狀態創建一個繼承與狀態接口的類,然后檢查上下文中的方法并將與特定狀態相關的所有代碼抽取到新建的類中。

  • 在上下文類中添加狀態接口類型的引用成員變量。

  • 再次檢查上下文中的方法,將空的條件語句替換為響應的狀態對象方法。

  • 傳遞上下文狀態。

滿足單一職責原則和開閉原則。

Demo

該模式將與狀態相關的行為抽取到獨立的狀態類中,讓原對象將工作委派給這些類的實例,而不是自行進行處理。

狀態模式可通過受外部控制且能根據對象狀態改變行為的方法來識別。

抽象的狀態類

抽象的狀態類

實現抽象狀態類

抽象實現類

上下文類

客戶端調用

客戶端代碼輸出結果

對于狀態模式來說,還是得根據具體得業務場景去實現,就是當某個狀態改變時,對應業務中有好多耦合得類也得對應做不同得變化時就可以使用狀態模式。

小寄語

人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。

原創不易,給個關注。

我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 ?謝謝。

- END -

往期推薦

設計模式總覽

設計模式之簡單工廠

設計模式之抽象工廠

設計模式之建造者

設計模式之原型

設計模式之單例

設計模式之適配器

設計模式之橋接

設計模式之組合

設計模式之裝飾器

設計模式之外觀

設計模式之享元

設計模式之代理

設計模式之責任鏈

設計模式之命令

設計模式之迭代器

設計模式之中介者

設計模式之備忘錄

設計模式之觀察者

總結

以上是生活随笔為你收集整理的设计模式之状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。