设为首页 加入收藏

TOP

TypeScript设计模式之策略、模板方法
2017-03-30 14:17:49 】 浏览:8091
Tags:TypeScript 设计模式 策略 模板 方法

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


下面用TypeScript简单实现一个策略模式:
说起策略就想到策略类游戏,年龄大点的可能都玩过War3,人族对兽族时如果侦察到对方不着急升本,用常规万金油打法,那人族就可以出狗男女来一波流。
如果侦察到兽族跳科技并摆下两个兽栏,那对方可能是暴飞龙,人族就要家里补个塔防偷农民,然后出点火枪或二本龙鹰。


这样人族就可以根据兽族的状态改变来做出不同的应对策略,其实现在游戏的AI基本都是通过决策树来实现的,也算是策略模式,只是更复杂,通过各种不同的条件最终得到一个决策来做出反应。


另外,有人可能已经发现了,上面生成策略的地方是可以拿出来,用之前讲的工厂模式来做,因为实际应用时策略通常比较多,甚至可能同时需要多种相关策略,用工厂模式来生产策略就可以很好的隐藏细节,解除依赖。


下面用TypeScript简单实现一个模板方法模式:
比方说发送http请求的代码,需要向两台不同的server(A和B)发送请求,两台server除了url不同,回来的数据格式也不一样,但由于都是http请求,主体架子是一样的,所以可以用模板方法来实现下。


这里可以看到主体功能由基类RequesterBase实现,两个子类则实现解析数据这些细节,这样就达到了消除重复代码的目的。
如果还有个ServerC的request发送部分也不一样,也没关系,TypeScript天生虚函数,在子类直接实现reqeustData即可,多态的作用下,运行时还是会调用到子类上。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇TypeScript设计模式之门面、适配器 下一篇2017年的Golang、Python、PHP、C+..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目