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

请公司做网站没有做好可以退钱吗云建网站网址

请公司做网站没有做好可以退钱吗,云建网站网址,WordPress出现503报错,网站网页设计平台状态模式 介绍 设计模式定义案例问题堆积在哪里解决办法状态模式一个对象 状态可以发生改变 不同的状态又有不同的行为逻辑游戏角色 加载不同的技能 每个技能有不同的:攻击逻辑 攻击范围 动作等等1 状态很多 2 每个状态有自己的属性和逻辑每种状态单独写一个类 角色…

状态模式

介绍

设计模式定义案例问题堆积在哪里解决办法
状态模式一个对象 状态可以发生改变
不同的状态又有不同的行为逻辑
游戏角色 加载不同的技能
每个技能有不同的:攻击逻辑 攻击范围 动作等等
1 状态很多
2 每个状态有自己的属性和逻辑
每种状态单独写一个类
角色需要那个状态就加载哪一个

类图

角色: 

stateBase 抽象状态

stateA 具体状态A

stateB 具体状态B

stateC 具体状态C

FactoryState  状态工厂

代码

RoleContext

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RoleContext
{string name;StateBase currentState = null;public RoleContext(){name = "独孤求败";}// 展示动作public void ShowAction(){if (null != currentState){currentState.Action();}}// 切换状态public void ChangeActionState(StateBase newState){currentState = newState;}
}

StateBase


public abstract class StateBase
{public abstract void Action();
}

StateA 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StateA : StateBase
{string name = "普攻";public override void Action(){Debug.Log("释放-" + name);}
}

StateB 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StateB : StateBase
{string name = "次元斩";public override void Action(){Debug.Log("释放-" + name);}
}

StateC

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StateC:StateBase
{string name = "升龙击";public override void Action(){Debug.Log("释放-" + name);}
}

FactoryState

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FactoryState
{// 单例static FactoryState  self = null;FactoryState() { }public static  FactoryState Instance(){if (null == self)self = new FactoryState();return self;}Dictionary<string, StateBase> dic = new Dictionary<string, StateBase>();// 获取实例public StateBase GetStateIns(string className){StateBase ins = null;switch (className){case "StateA":{if (false == dic.ContainsKey(className))ins = new StateA();elseins = dic[className];}break;case "StateB":{if (false == dic.ContainsKey(className))ins = new StateB();elseins = dic[className];}break;case "StateC":{if (false == dic.ContainsKey(className))ins = new StateC();elseins = dic[className];}break;default:Debug.Log("未发现该类!");break;}return ins;}
}

测试代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestZT : MonoBehaviour
{void Start(){RoleContext role = new RoleContext();// 切换技能Arole.ChangeActionState(FactoryState.Instance().GetStateIns("StateA"));role.ShowAction();// 切换技能Brole.ChangeActionState(FactoryState.Instance().GetStateIns("StateB"));role.ShowAction();// 切换技能Crole.ChangeActionState(FactoryState.Instance().GetStateIns("StateC"));role.ShowAction();}}

结果

总结

状态模式

1 是一个非常好用的 解耦合的手段, 角色不同的状态封装不同的(动作,属性,限制)

2 非常符合对修改封闭对扩展开发的原则。

3 让状态的职责更加的单一

4 也符合了依赖倒置 ,依赖了抽象

5 符合了迪米特原则,角色对状态类内部的具体实现不知道

http://www.yayakq.cn/news/877196/

相关文章:

  • 如何推广app让别人注册百度推广优化怎么做
  • wordpress加速网站插件网站整体迁移该怎么做
  • 建站经验建设部职业资格注册中心网站
  • 电脑做科目一网站用腾讯云做淘宝客网站视频流程
  • 海口网站排名推广顺义网站优化
  • wordpress地址和站点地址蔚县网站建设公司
  • 建筑搜索网站wordpress分类数据库参数
  • 网站建设 博贤科技哪里做网站
  • 一般小型教育网站的建设和开发做网站程序的步骤
  • 网站开发信息平台项目总结关于网页制作的毕业设计
  • 建站之星服务器WordPress移动端加搜索框
  • 网站设计是什么提升网站知名度
  • 义乌建设公司网站烟台网站制作专业
  • 东莞网站推广排名水果 网站源码
  • 做网站语言最好头像制作器
  • 网站服务器转移视频吗广州定制网站建设
  • 网站服务器宽带dedecms菜谱网站源码
  • 昆山专业做网站用wix做网站需要备案吗
  • 网站开发大概需要多少钱wordpress怎么改中文
  • 建站用wordpress好吗快速建站软件排名
  • 网站后台安装三里屯网站建设
  • 2345浏览器网站进入唐山哪个公司做网站
  • 大理石在哪些网站做宣传前期的网站建设的难度
  • 电子商务网站建设问题重庆竣工验收备案网上查询
  • 网站百度收录查询杭州高端网站建设到蓝韵网络
  • 锤子 网站 模版开平小学学生做平网站
  • 做暧小说在线观看网站室内装饰设计人员
  • 网站建设与优化推广的话术wordpress大学添加背景音乐
  • 网站建设整体流程wordpress 域名
  • 企业网站 微信里怎么做网站开发方案怎么写