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

手机网站如何推广网页制作用哪个软件

手机网站如何推广,网页制作用哪个软件,国外游戏网站欣赏,Asp做网站前期准备文章目录 一.什么是状态模式#xff1f;二.状态模式的结构三.状态模式的应用场景四.状态模式的优缺点五.状态模式的C实现六.状态模式的JAVA实现七.代码解释八.总结 类图#xff1a; 状态设计模式类图 一.什么是状态模式#xff1f; 状态模式#xff08;State Pattern… 文章目录 一.什么是状态模式二.状态模式的结构三.状态模式的应用场景四.状态模式的优缺点五.状态模式的C实现六.状态模式的JAVA实现七.代码解释八.总结 类图 状态设计模式类图 一.什么是状态模式 状态模式State Pattern是一种行为型设计模式允许对象在其内部状态改变时改变其行为看起来就像对象改变了其类。状态模式通过将状态封装为独立的类使得对象的行为能够根据内部状态动态地改变。  在状态模式中Context环境类持有一个指向State状态接口的引用对象并通过该对象来进行状态切换。具体的状态通过实现状态接口的不同子类来进行封装。 二.状态模式的结构 Context环境类用于维护当前状态并在特定操作时切换状态。它持有一个State对象的引用用来对状态进行操作。State状态接口定义了一个接口声明了每个具体状态需要实现的行为。ConcreteStateA 和 ConcreteStateB具体状态类实现State接口的不同子类表示对象在不同状态下的行为。 三.状态模式的应用场景 对象行为依赖于状态且状态在运行时变化如电梯的状态上升、下降、停止、游戏角色的状态跑步、跳跃、静止。条件语句过多当对象中有大量if-else或switch语句判断状态时可以考虑使用状态模式进行优化。 四.状态模式的优缺点 优点: 封装状态转换将状态与相关行为封装在一个类中便于维护和扩展。避免条件判断通过多态替代了条件判断代码更具可读性和扩展性。 缺点: 类数量增加每个状态需要一个类可能会导致类数量较多。 五.状态模式的C实现 #include iostream #include memory// 前置声明避免循环引用 class State;// 环境类Context class Context { private:std::shared_ptrState state; // 当前状态public:// 设置当前状态void setState(std::shared_ptrState newState) {state newState;}// 执行请求调用当前状态的Handle方法void request(); };// 状态接口State class State { public:virtual void handle(Context context) 0; // 定义纯虚函数具体状态类需实现 };// 具体状态类 AConcreteStateA class ConcreteStateA : public State { public:void handle(Context context) override {std::cout ConcreteStateA handling request.\n;// 状态切换可以切换到状态 Bcontext.setState(std::make_sharedConcreteStateB());} };// 具体状态类 BConcreteStateB class ConcreteStateB : public State { public:void handle(Context context) override {std::cout ConcreteStateB handling request.\n;// 状态切换可以切换回状态 Acontext.setState(std::make_sharedConcreteStateA());} };// 环境类方法的实现 void Context::request() {if (state) {state-handle(*this); // 调用当前状态的 handle 方法} }// 测试代码 int main() {Context context;// 初始化状态为 Acontext.setState(std::make_sharedConcreteStateA());// 执行多次请求测试状态切换context.request(); // ConcreteStateA 处理请求然后切换到 ConcreteStateBcontext.request(); // ConcreteStateB 处理请求然后切换到 ConcreteStateAcontext.request(); // ConcreteStateA 处理请求然后切换到 ConcreteStateBreturn 0; }六.状态模式的JAVA实现 // 抽象状态类 abstract class State {public abstract void Handle(Context context); }// 具体状态A class ConcreteStateA extends State {Overridepublic void Handle(Context context) {System.out.println(ConcreteStateA: Handling request and transitioning to ConcreteStateB.);context.setState(new ConcreteStateB());} }// 具体状态B class ConcreteStateB extends State {Overridepublic void Handle(Context context) {System.out.println(ConcreteStateB: Handling request and transitioning to ConcreteStateA.);context.setState(new ConcreteStateA());} }// 环境类 (Context) class Context {private State state;public Context(State state) {this.state state;}public void setState(State state) {this.state state;}public void Request() {if (state ! null) {state.Handle(this);}} }// 客户端代码 public class StatePatternDemo {public static void main(String[] args) {// 初始状态为 ConcreteStateAContext context new Context(new ConcreteStateA());// 调用多次 Request观察状态切换context.Request(); // 从 A 切换到 Bcontext.Request(); // 从 B 切换到 Acontext.Request(); // 再次从 A 切换到 B} }七.代码解释 Context 类 Context类持有一个指向State的指针使用智能指针std::shared_ptr来管理状态对象的生命周期。它包含一个request()方法用于请求当前状态处理相应的操作。setState()方法用于切换状态方便在运行时改变state的引用指向不同的State对象。 State 接口 State接口中定义了一个纯虚函数handle()表示不同状态下的行为。Context通过调用state-handle(*this)来执行当前状态的具体行为。 ConcreteStateA 和 ConcreteStateB ConcreteStateA和ConcreteStateB是State接口的具体实现类每个类都定义了各自的handle()方法。在ConcreteStateA::handle()中Context的状态被切换为ConcreteStateB而在ConcreteStateB::handle()中状态切换回ConcreteStateA。这种状态切换体现了状态模式的核心思想即状态内部控制状态转换客户端不需要关心状态如何切换。 测试代码 在main函数中创建Context对象context并将初始状态设为ConcreteStateA。通过多次调用request()方法可以看到状态在ConcreteStateA和ConcreteStateB之间切换体现出对象行为随状态变化而变化的特点。 八.总结 状态模式是一种非常适合解决对象行为依赖于状态变化的设计模式。通过将状态封装为独立的类状态模式使得代码更加清晰和易于维护避免了条件判断语句的冗余和复杂性。每个具体状态类不仅实现了各自的行为还决定了状态切换的逻辑从而让状态之间的转换更为灵活。 关键点 状态模式封装了对象内部的状态变化逻辑使得对象的行为可以动态改变。通过多态状态模式避免了条件判断使代码更具可扩展性。状态切换由具体状态类控制客户端只需与Context交互降低了耦合度。
http://www.dnsts.com.cn/news/82917.html

相关文章:

  • 简述网站设计步骤网站设计时尚
  • 网站建设交流qq网站建设工作计划
  • 郑州做音响网站的公司群推广
  • html网站模板下载深圳有限公司
  • 国人在线做网站怎么样长春 行业网站
  • 建设银行缴费网站登录成都网页制作推广
  • 廊坊电子网站建设天元建设集团有限公司人力资源部电话
  • 网站策划与建设阶段的推广的目标建设网站需要做什么的
  • 重庆商会网站建设落伍者论坛 做网站
  • 鞍山市城乡建设局网站网页制作与网站建设06627
  • 网站品牌建设公司仿网链网站源代码下载
  • 旅游网站设计规划书西安官网设计公司
  • 郑州网站制作价格wordpress 站点图标
  • 占酷设计网站官网入口淘宝流量平台
  • sns社交网站 建设文档网站分站是怎么做的
  • 购买网站空间ftp设计苏州高新区网页设计
  • 介绍做素食的网站在线crm在线oa免费观看
  • 前几年做哪个网站能致富丽水网站建设企业
  • 湖州网站建设推广网站开发知识视频教程
  • 高青县住房和城乡建设局网站网站建设公司杭州
  • 东莞中小企业网站制作有哪些国外网站做的好的效果图
  • 学校建设网站重要性个人网站不备案
  • 怎样做百度网站你好南京网站
  • 网站布局的重要性怎样制作一个微信小程序
  • 网站开发打开世界之窗默认内核购物网站页面设计思路
  • 适合毕设做的简单网站深圳市城乡建设局网站
  • 网站建设公司合同模板网站搭建的意义
  • 网站开发 php 书籍 推荐开发一款购物app需要多少钱
  • 网站停留时间 从哪里获取手表购物网站排名
  • 网站建设的方案计划网站空间怎样设置用户名和密码