
C# 状态模式
发布日期:2021-05-07 21:45:10
浏览次数:17
分类:精选文章
本文共 1515 字,大约阅读时间需要 5 分钟。
using UnityEngine;using System.Collections;public class TestLight : MonoBehaviour{ private Light lights = null; void Start() { // 初始化电灯,原始状态为关 lights = new Light(new Off()); // 第一次按下开关,打开电灯 lights.PressSwich(); // 第二次按下开关,关闭电灯 lights.PressSwich(); //解析:第一次 Light类 默认用 Off类 去传值 //这就让 Light类的 state 为 Off类 实例化的 //在调用时,只会调用 Off类 中的重写方法 PressSwich //这里将 Light类 传递过去,只是为了让 Off类 里面也可以调用 Light类 其他的方法, //也可以转换其他的状态,在这里只是在里面做了一下状态转换,其实它的功能远不止如此 //第2次调用PressSwich方法时,这时Light类状态state 已经被 On类 赋值, //所以调用了On类 的PressSwich方法,这时就打印了灯关了 }}////// 电灯类,对应模式中的Context类/// public class Light{ private LightState state; public Light(LightState state) { this.state = state; } ////// 按下电灯开关 /// public void PressSwich() { state.PressSwich(this); } public LightState State { get { return state; } set { state = value; } }}////// 抽象的电灯状态类,相当于State类/// public abstract class LightState{ public abstract void PressSwich(Light light);}////// 具体状态类, 开/// public class On : LightState{ ////// 在开状态下,按下开关则切换到关的状态。 /// /// public override void PressSwich(Light light) { Debug.Log("关闭开关"); light.State = new Off(); }}////// 具体状态类,关/// public class Off : LightState{ ////// 在关状态下,按下开关则打开电灯。 /// /// public override void PressSwich(Light light) { Debug.Log("打开开关"); light.State = new On(); }}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月24日 10时39分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(在模仿中精进数据可视化07)星球研究所大坝分布可视化
2021-05-09
(数据科学学习手札02)Python与R在循环语句与条件语句上的异同
2021-05-09
(数据科学学习手札06)Python在数据框操作上的总结(初级篇)
2021-05-09
(数据科学学习手札23)决策树分类原理详解&Python与R实现
2021-05-09
(数据科学学习手札27)sklearn数据集分割方法汇总
2021-05-09
(数据科学学习手札40)tensorflow实现LSTM时间序列预测
2021-05-09
[整理] 哪些集合类是线程安全的?(Java)
2021-05-09
[整理] UML的各种图总结
2021-05-09
8 个警示和学习的 5 个阶段
2021-05-09
c# 图片带水纹波动
2021-05-09
H5 贪吃蛇源码
2021-05-09
从零开始学安全(十六)● Linux vim命令
2021-05-09
从零开始学安全(三十四)●百度杯 ctf比赛 九月场 sqli
2021-05-09
3389连接痕迹清除
2021-05-09
发生系统错误 6118
2021-05-09
c# API接受图片文件以文件格式上传图片
2021-05-09
阿里巴巴Json工具-Fastjson教程
2021-05-09
Spring Cloud Gateway - 快速开始
2021-05-09
Spring Security 实战干货:理解AuthenticationManager
2021-05-09
Java对象转JSON时如何动态的增删改查属性
2021-05-09