通俗易懂设计模式解析——状态模式
前言 今天我们讲的是状态模式【State Pattern】、这个名字咋一看不好理解,但是仔细一想还是比较容易的。状态模式重点关注的是状态。状态又牵扯着什么呢?房屋的状态暂且可以分为出租、签订合同、退房。那么出租对应的是什么呢?出租状态代表可以租房。可以租房是一个行为了。所以不难理解的是状态模式关注的是状态的改变与行为的变化。 状态模式介绍 一、 来由 在软件系统中,经常状态的改变影响着行为的变化。例如房屋状态是出租既可以租房、出售既可以买卖房、不租售意味不可操作。那么如何避免对象操作和状态转换之间出现紧耦合呢?状态模式将每种状态对应的行为抽象出来成为单独新的对象,这样状态的变化不再依赖于对象内部的行为正解决了此问题。 二、 意图 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 三、 案例图 四、 状态模式代码示例 我们看下案例图中主要三个部分: 环境角色: 包含保留了一个具体状态的实例、给出当前状态及调用方法。 抽象状态: 定义接口、封装一个状态相对应的行为方法。 具体状态: 实现具体状态对应的的具体对应行为。 我们继续看这个房屋的案例,针对房屋我们整理这么一个案例,租房然后签订合同。合同半年内退房无押金。租房时间达到半年退房可得押金。我们看下代码实现吧 : namespace State_Pattern { /// <summary> ///