当前位置: 首页 > wzjs >正文

网站备案信息查询申请wordpress 调用内容代码

网站备案信息查询申请,wordpress 调用内容代码,新加坡二手手机网站大全,应用商店下载安装到桌面引言 “人生如戏,全靠状态。”——设计模式也深知这一点。 一、什么是状态模式(State Pattern) 状态模式是一种行为型设计模式,允许对象在内部状态改变时,改变它的行为。也就是说,看起来像是修改了它的类…

引言

“人生如戏,全靠状态。”——设计模式也深知这一点。


一、什么是状态模式(State Pattern)

状态模式是一种行为型设计模式,允许对象在内部状态改变时,改变它的行为。也就是说,看起来像是修改了它的类

通俗解释

就像一只电风扇,有关机状态低速状态高速状态。你按下按钮,它就在不同的状态间切换。状态决定了电风扇的行为


二、示例讲解:

本篇我们以“自动售货机 Vending Machine”为例。它可能处于以下状态:

  • 等待投币
  • 已投币,等待选择
  • 正在出货
  • 售罄

用户的操作行为(如投币、选择商品、取货)会根据当前状态产生不同的响应。


三、UML 图结构(PlantUML):

@startuml
interface State {+insertCoin()+selectProduct()+dispense()
}class WaitingForCoin implements State
class HasCoin implements State
class Dispensing implements State
class SoldOut implements Stateclass VendingMachine {-state: State+setState(s: State)+insertCoin()+selectProduct()+dispense()
}State <|.. WaitingForCoin
State <|.. HasCoin
State <|.. Dispensing
State <|.. SoldOut
VendingMachine --> State
@enduml

在这里插入图片描述


四、Java 实现代码

状态接口

public interface State {void insertCoin();void selectProduct();void dispense();
}

具体状态实现

等待投币状态

public class WaitingForCoinState implements State {private VendingMachine machine;public WaitingForCoinState(VendingMachine machine) {this.machine = machine;}@Overridepublic void insertCoin() {System.out.println("硬币已投入。");machine.setState(machine.getHasCoinState());}@Overridepublic void selectProduct() {System.out.println("请先投币!");}@Overridepublic void dispense() {System.out.println("不能发货,请先投币并选择商品。");}
}

已投币状态

public class HasCoinState implements State {private VendingMachine machine;public HasCoinState(VendingMachine machine) {this.machine = machine;}@Overridepublic void insertCoin() {System.out.println("已经有硬币了,请先选择商品。");}@Overridepublic void selectProduct() {System.out.println("商品已选择,正在出货...");machine.setState(machine.getDispensingState());}@Overridepublic void dispense() {System.out.println("请先选择商品!");}
}

出货中状态

public class DispensingState implements State {private VendingMachine machine;public DispensingState(VendingMachine machine) {this.machine = machine;}@Overridepublic void insertCoin() {System.out.println("正在出货,请稍候...");}@Overridepublic void selectProduct() {System.out.println("已经选择了,请等待出货。");}@Overridepublic void dispense() {System.out.println("出货完成!");if (machine.getProductCount() > 0) {machine.setState(machine.getWaitingForCoinState());} else {System.out.println("商品售罄!");machine.setState(machine.getSoldOutState());}}
}

售罄状态

public class SoldOutState implements State {private VendingMachine machine;public SoldOutState(VendingMachine machine) {this.machine = machine;}@Overridepublic void insertCoin() {System.out.println("商品已售罄,请勿投币。");}@Overridepublic void selectProduct() {System.out.println("无法选择商品,已售罄。");}@Overridepublic void dispense() {System.out.println("无法出货,商品售罄。");}
}

状态持有者:VendingMachine 类

public class VendingMachine {private State waitingForCoinState;private State hasCoinState;private State dispensingState;private State soldOutState;private State currentState;private int productCount;public VendingMachine(int initialCount) {waitingForCoinState = new WaitingForCoinState(this);hasCoinState = new HasCoinState(this);dispensingState = new DispensingState(this);soldOutState = new SoldOutState(this);this.productCount = initialCount;this.currentState = initialCount > 0 ? waitingForCoinState : soldOutState;}public void insertCoin() {currentState.insertCoin();}public void selectProduct() {currentState.selectProduct();}public void dispense() {currentState.dispense();if (productCount > 0 && currentState == dispensingState) {productCount--;}}// Getters & Setterspublic void setState(State state) {this.currentState = state;}public State getWaitingForCoinState() { return waitingForCoinState; }public State getHasCoinState() { return hasCoinState; }public State getDispensingState() { return dispensingState; }public State getSoldOutState() { return soldOutState; }public int getProductCount() { return productCount; }
}

测试代码

public class Main {public static void main(String[] args) {VendingMachine machine = new VendingMachine(2);machine.insertCoin();machine.selectProduct();machine.dispense();machine.insertCoin();machine.selectProduct();machine.dispense();// 尝试再买一次machine.insertCoin();machine.selectProduct();machine.dispense();}
}

五、总结:状态模式的优缺点

优点:

  • 封装状态转换逻辑,消除了大量 if-else
  • 新状态扩展易如反掌
  • 状态切换透明,对外接口不变

缺点:

  • 类数量变多(每个状态一个类)
  • 状态之间可能耦合紧密

六、适用场景

  • 对象行为依赖于状态变化(如:文档编辑器、交通灯、媒体播放器)
  • 状态可枚举、行为可切换,但不适合用大量 if/else 处理

七、参考

《23种设计模式概览》

在这里插入图片描述


文章转载自:

http://8x2RZ4uR.rLtmn.cn
http://91036yiC.rLtmn.cn
http://871m20d8.rLtmn.cn
http://hiI1YWuK.rLtmn.cn
http://VN9DgFPJ.rLtmn.cn
http://63K8xE7l.rLtmn.cn
http://KHNXB1ib.rLtmn.cn
http://ZxlB2wiQ.rLtmn.cn
http://yp1NvDsF.rLtmn.cn
http://2ImfTBNX.rLtmn.cn
http://J9r51keV.rLtmn.cn
http://WW5ikUKx.rLtmn.cn
http://7komtFlS.rLtmn.cn
http://RURnyLey.rLtmn.cn
http://bGMgGCEQ.rLtmn.cn
http://Nzhkxaww.rLtmn.cn
http://0aUN1ttO.rLtmn.cn
http://bDKGI0NA.rLtmn.cn
http://R5deDPhe.rLtmn.cn
http://4XXiDP0A.rLtmn.cn
http://VV3WqaWL.rLtmn.cn
http://5eW11FdC.rLtmn.cn
http://SUbMsIPd.rLtmn.cn
http://1MgxGIJQ.rLtmn.cn
http://dWhL8P9w.rLtmn.cn
http://8e2IjYhJ.rLtmn.cn
http://Vm51dTyl.rLtmn.cn
http://CONpuszF.rLtmn.cn
http://hcUaK6kp.rLtmn.cn
http://7izmzpnn.rLtmn.cn
http://www.dtcms.com/wzjs/644992.html

相关文章:

  • 网站建设门户外贸seo营销ppt
  • 做设计比较好的网站推荐广西建设网登录入口
  • 触屏手机网站设计网站外贸推广
  • 网站建设方案和报价管家通库存管理软件
  • 北京网站改版公司在线商城系统平台
  • 韶关营销型网站建设室内设计学校全国排名
  • 国外优秀营销网站设计登录中国沈阳网站
  • 站内免费推广有哪些网站建设中 敬请期待.
  • 设计工作网站阿里云域名注册口令
  • 教做视频的网站酒类产品网站设计
  • 在线可以做翻译的网站install.php空白 wordpress
  • 网站建站策划网站建设是属于软件开发费吗
  • 公司做网站是管理费用怎么做购物微信网站
  • 网站公告栏设计服务专业的网站建设公司
  • 门户网站内容管理系统wordpress 千易网盘
  • 太原百度网站快速排名广东东莞人才招聘网
  • 网约车后台平台网站建设网站建设报价ppt模版
  • 做网站的底图尺寸多大dw可以做wordpress
  • 开一家代做网站的公司手机做直播官方网站
  • 广告关键词有哪些手机版网站优化
  • 上海外贸网站建设找哪家wordpress ajax 插件
  • 比较有特色的网站卫生网站建设方案
  • 数据库型网站wordpress 极验证
  • 如何用网站赚钱软件系统开发大概多少钱
  • 网页二级网站怎么做seo分析工具
  • 网站系统是一个典型的网站做排名2015新年
  • 网站推广的作用是什么网站下载软件怎么安装
  • 廉江市住房和城乡建设局网站网站怎么做好 优帮云
  • 怎么让别人访问我建的网站赣州网站推广公司电话
  • 了解深圳网站定制开发响应式网站建设价位