电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解JAVA 設計模式之狀態模式

瀏覽:7日期:2022-08-30 10:28:42

在狀態模式(State Pattern)中,類的行為是基于它的狀態改變的。這種類型的設計模式屬于行為型模式。

在狀態模式中,我們創建表示各種狀態的對象和一個行為隨著狀態對象改變而改變的 context 對象。

介紹

意圖:

允許對象在內部狀態發生改變時改變它的行為,對象看起來好像修改了它的類。

主要解決:

對象的行為依賴于它的狀態(屬性),并且可以根據它的狀態改變而改變它的相關行為。

何時使用:

代碼中包含大量與對象狀態有關的條件語句。

如何解決:

將各種具體的狀態類抽象出來。

關鍵代碼:

通常命令模式的接口中只有一個方法。而狀態模式的接口中有一個或者多個方法。而且,狀態模式的實現類的方法,一般返回值,或者是改變實例變量的值。也就是說,狀態模式一般和對象的狀態有關。實現類的方法有不同的功能,覆蓋接口中的方法。狀態模式和命令模式一樣,也可以用于消除 if...else 等條件選擇語句。

應用實例:

1、打籃球的時候運動員可以有正常狀態、不正常狀態和超常狀態。

2、曾侯乙編鐘中,’鐘是抽象接口’,’鐘A’等是具體狀態,’曾侯乙編鐘’是具體環境(Context)。

優點:

1、封裝了轉換規則。

2、枚舉可能的狀態,在枚舉狀態之前需要確定狀態種類。

3、將所有與某個狀態有關的行為放到一個類中,并且可以方便地增加新的狀態,只需要改變對象狀態即可改變對象的行為。

4、允許狀態轉換邏輯與狀態對象合成一體,而不是某一個巨大的條件語句塊。

5、可以讓多個環境對象共享一個狀態對象,從而減少系統中對象的個數。

缺點:

1、狀態模式的使用必然會增加系統類和對象的個數。

2、狀態模式的結構與實現都較為復雜,如果使用不當將導致程序結構和代碼的混亂。

3、狀態模式對'開閉原則'的支持并不太好,對于可以切換狀態的狀態模式,增加新的狀態類需要修改那些負責狀態轉換的源代碼,否則無法切換到新增狀態,而且修改某個狀態類的行為也需修改對應類的源代碼。

使用場景:

1、行為隨狀態改變而改變的場景。

2、條件、分支語句的代替者。

注意事項:

在行為受狀態約束的時候使用狀態模式,而且狀態不超過 5 個。

實現

我們將創建一個 State 接口和實現了 State 接口的實體狀態類。Context 是一個帶有某個狀態的類。

StatePatternDemo,我們的演示類使用 Context 和狀態對象來演示 Context 在狀態改變時的行為變化。

詳解JAVA 設計模式之狀態模式

步驟 1

創建一個接口。

public interface State { public void doAction(Context context);}

步驟 2

創建實現接口的實體類。

public class StartState implements State { public void doAction(Context context) { System.out.println('Player is in start state'); context.setState(this); } public String toString(){ return 'Start State'; }}

public class StopState implements State { public void doAction(Context context) { System.out.println('Player is in stop state'); context.setState(this); } public String toString(){ return 'Stop State'; }}

步驟 3

創建 Context 類。

public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; }}

步驟 4

使用 Context 來查看當狀態 State 改變時的行為變化。

public class StatePatternDemo { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); }}

步驟 5

執行程序,輸出結果:

Player is in start stateStart StatePlayer is in stop stateStop State

以上就是詳解JAVA 設計模式之狀態模式的詳細內容,更多關于JAVA 狀態模式的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 制冷采购电子商务平台——制冷大市场 | 健康管理师报考条件,考试时间,报名入口—首页 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商| 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 玻璃钢板-玻璃钢防腐瓦-玻璃钢材料-广东壹诺 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 西门子代理商_西门子变频器总代理-翰粤百科 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 钛板_钛管_钛棒_钛盘管-无锡市盛钛科技有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 |