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

五核网站建设青岛胶州网站建设

五核网站建设,青岛胶州网站建设,长沙知名网站建设,wordpress 多域名 图片不显示🚀简介 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,我们可以通过创建一个状态接口和一些实现了该接口的状态类来实现状态模式。然后,我们可以创建一个上下文类,它会根据其当前的状态对象来改…

🚀简介

状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,我们可以通过创建一个状态接口和一些实现了该接口的状态类来实现状态模式。然后,我们可以创建一个上下文类,它会根据其当前的状态对象来改变其行为。

状态模式包含以下主要角色。
  1. 环境(Context)角色:也称为上下文,它定义了客户程序需要的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。
  2. 抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。
  3. 具体状态(Concrete State)角色:实现抽象状态所对应的行为。

🚀案例

🐤抽象状态

public interface IState
{void Handle(Context context);
}

🐤具体状态

ConcreteStateA和ConcreteStateB,它们都实现了IState接口。

IState接口定义了一个Handle方法,这个方法接受一个Context对象作为参数。Context对象持有当前的状态。

在ConcreteStateA的Handle方法中,它将Context的状态改变为ConcreteStateB。同样,在ConcreteStateB的Handle方法中,它将Context的状态改变为ConcreteStateA。

这样,Context对象的状态就在ConcreteStateA和ConcreteStateB之间不断切换。

这就是状态模式的基本思想:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

public class ConcreteStateA : IState
{public void Handle(Context context){context.State = new ConcreteStateB();}
}public class ConcreteStateB : IState
{public void Handle(Context context){context.State = new ConcreteStateA();}
}

🐤环境角色 

环境角色有时候也被称为上下文角色,它定义了客户端需要的接口,并且维护一个具体状态角色的实例,这个实例定义当前状态。

在这个类中,首先定义了一个私有的IState类型的_state变量,用于存储当前的状态。

然后,定义了一个构造函数,接收一个IState类型的参数,用于初始化_state变量。

接着,定义了一个公有的State属性,用于获取或设置_state变量的值。在设置_state变量的值时,会输出当前状态的类型名。

最后,定义了一个名为Request的方法,该方法会调用_state变量的Handle方法,用于处理请求。这个方法的参数是当前的Context实例,这样就可以在Handle方法中改变当前的状态。

public class Context
{private IState _state;// Constructorpublic Context(IState state){this.State = state;}// Gets or sets the statepublic IState State{get { return _state; }set{_state = value;Console.WriteLine("State: " + _state.GetType().Name);}}public void Request(){_state.Handle(this);}
}

🐤测试

class MyClass
{public static void Main(string[] args){Context context = new Context(new ConcreteStateA());// 不断地进行请求,同时更改状态context.Request();context.Request();context.Request();context.Request();}
}

运行结果:

在测试类中,我们创建了一个Context对象,并给它设置了初始状态ConcreteStateA。然后我们连续调用四次context.Request()方法。由于ConcreteStateAConcreteStateB在处理请求后会互相转换,所以输出结果会是A、B、A、B的交替出现。

🚀优缺点

优点:
  1. 将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。
  2. 允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。
缺点:
  1. 状态模式的使用必然会增加系统类和对象的个数。
  2. 状态模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱。
  3. 状态模式对"开闭原则"的支持并不太好。

使用场景:

  1. 当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,就可以考虑使用状态模式。
  2. 一个操作中含有庞大的分支结构,并且这些分支决定于对象的状态时。
http://www.yayakq.cn/news/568823/

相关文章:

  • jsp网站 iiswordpress 首页静态化
  • 辽宁朝阳网站建设公司wordpress页脚间距代码
  • 网站开发公司经营范围strikingly建站怎么样
  • 淄博建设网站手工网站和自助建站式网站却别
  • 做网站时的注册权起到什么作用上海网站怎么备案号
  • 有了域名怎样做淘客网站百度网址大全手机浏览器
  • 网站建设的结尾移动互联网开发天气预报实现效果报告
  • 网站建设 .北京蓝纤全国有多少家展馆设计公司
  • 物流案例网站视频剪辑怎么自学
  • 微营销网站建设ui设计那个培训班好
  • 有关建筑网站建设方案自己在网站做邮箱
  • 哈尔滨专业网站制作爱建站小程序功能介绍
  • 营销型网站设计稿天河建网站公司
  • 网站推广120种方法中山网站建设模板网络公司
  • 外贸自建站源码镇江公司网站建设
  • 益阳做网站水禾田网站建设公司
  • 视频网站切片怎么做seo计费系统源码
  • 上海网络建站模板拼多多无货源网店怎么开
  • 湘潭建设路街道网站重庆网站关键词优化推广
  • 优质的专业网站建设做塑料的外贸网站有哪些
  • 自己做的网站怎么放视频教程软件开发培训学费
  • 网站设计就业要求天津网络公司流程
  • 个人视频网站制作wordpress手机视频播放器
  • wordpress建站社区卖花网站模板
  • 网站开发设计注册建网站用什么服务器好
  • 四大免费网站2017网站建设前景
  • 怎么给自己做个网站Wordpress订阅栏目
  • 网站联系方式设计网站上线前做环境部署
  • 网站的页面动态需要哪些方法做太月星网站建设程序开发网页设计
  • 网站后台怎么做alt标签狗贩子怎么做网站卖狗