设为首页 加入收藏

TOP

TypeScript设计模式之职责链、状态
2017-03-30 14:17:50 】 浏览:255
Tags:TypeScript 设计模式 职责 状态

看看用TypeScript怎样实现常见的设计模式,顺便复习一下。学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想记住就好。
这里尽量用原创的,实际中能碰到的例子来说明模式的特点和用处。


WebApi的handler可能大家有用过,对发出去的请求和请求回来的数据都可以用自定义handler在发出前或最终回来前进行处理,非常方便,下面用TypeScript来简单实现一个HttpHandler:


先建立一个抽象Handler类,包含一个发送请求的sendReqeust以及用来链式处理的innerHandler:


实现第一个Handler类:


再实现第二个Handler类:


把两个HttpHandler连起来


输出:


处理的顺序就是 1221,中间是真正取数据的,这就是管道处理最基本的代码,用到的就是职责链模式。


当然职责链的形成有很多方式,这里采用的是装饰手段,保存下一个的引用的方式来形成一个链表,还可以采用队列或栈方式保存所有handler,按顺序执行。


下面用TypeScript简单实现一下状态模式:
大家都玩过游戏,控制游戏的主角时鼠标左键可以是移动,遇到怪时点击左键是攻击,遇到NPC时是对话。
下面就以这点简单实现个状态模式:


角色和状态的接口,状态只需要处理当前状态需要做的事:


角色的具体实现:


状态的具体实现,分为移动状态,攻击状态,对话状态:


使用:


这样随着状态的变化,点击左键做不同的事。
对于由谁来驱动状态变化可以根据实际情况来考虑,简单的话直接放角色里面就行,由角色自己决定自己的状态,复杂的话可以考虑用表来驱动状态机,通过表过实现状态的跳转。


关于TypeScript的推荐文章


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SylixOS iMX6平台I2C总线驱动 下一篇TypeScript设计模式之备忘录、命令

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目