摘要:
责任链,看到名字大概就能了解到这个模式的含义了,就是有N个责任,组成一条责任链,进行流水线作业。举个生活中的例子,比如你要请假,请假是时间比较长(十个月),你去找Leader组长,组长一看假条迷惑的说,你要去生孩子吗?这个你得去问项目经理。然后你又转战项目经理那里,项目经理看了说,你是十月请假看国庆典礼那,还是请十个月假回家休养。你肯定得告诉项目经理你要请十个月假。项目经理皱皱眉头说,这个我说了没... 阅读全文
摘要:
迭代器,将遍历集合的方法归一化,不论是ArrayList,普通数组还是其他集合类型,使得遍历集合可以统一管理。UML图:只要集合都实现了以下接口即可,当然接口函数可以包括Remove等方法,本例列举的是最基础的方法。 internalinterfaceIIterator{boolHasNext();objectNext();}也就是说所有的结合类可以判断是否有下一个元素,以及可以返回下一个元素。具... 阅读全文
摘要:
Dota中地图有那么多的树,为什么没有拖慢游戏速度那,在此就要讲讲享元模式了。享元模式将类的粒度进一步细化,FlyWeight的意思是最轻量级选手,也称蝇量模式,对于大量数量的对象来说,类将内蕴状态和外蕴状态分开,内蕴只含最少的数据,剩下的交给外蕴。保证多对象内存消耗不会过大。UML图:测试代码:DotaPatternLibrary.Flyweight.Trees trees = new Dota... 阅读全文
摘要:
观察者在生活中最显而易见的例子就是报纸订阅了,此时报纸内容是主体,而每个花钱订阅的家庭就都是观察者。当你订阅时报纸出版商会将报纸按时发到你的订报箱,当你停止订阅是你的订报箱将会是空的,当然你随时可以订阅或取消订阅。UML图:观察者模式对主题信息的处理方式分两种,“推模式”和“拉模式”。framework中最明显的观察者模式要算是事件了,你可以使用... 阅读全文
摘要:
原型模式,说白了就是拷贝新对象,新对象是原来的对象一模一样。就像是孙悟空用毛吹出的N个孙悟空一样,他们都是一样的具有一样的状态。UML图:在C#中原型模式就是要实现Clone方法,完成对对象的拷贝,framework中已经有了这个接口我们不必去重新定义了(ICloneable)。C#中分为深拷贝和浅拷贝,浅拷贝这样实现即可: publicobjectClone(){returnthis.Membe... 阅读全文
摘要:
备忘录模式,最直接的就是记录游戏进度了,如果有个18关的游戏不能记录游戏进度,每次都必须从第一关开始玩,那你是不是要放弃游戏了,我肯定会的,嘿嘿。在C#中序列化使我们能够更方便的完成备忘录模式,UML图先给大家一个概念:具体代码见完整代码。测试代码: DotaPatternLibrary.Memento.Game game = new DotaPatternLibrary.Memento.Game... 阅读全文
摘要:
代理模式分为好多中,什么透明代理啦,远程代理啦,安全代理啦,本文介绍的是最基本的代理。UML图:真正的对象和代理对象均继承相同的接口,实例化代理对象时将真实对象传入,当操作代理对象时感觉像是在操作真正对象一样。像是代理对象把真正的对象包装后再在客户端处理。 internalinterfaceISubject{voidDeal();}关键在代理类的构造函数中实现对真正对象的实例化,在类的成员方法中操... 阅读全文
摘要:
单件模式,单件意味着唯一,我们创建的类的实例是唯一的。唯一的处理打印机,消息队列,注册表等等.......UML图:单件模式看来简单,其实不然。包括什么双重加锁(多线程要求),延迟实例化等等,具体在TerryLee的blog上有详细的描述,本文不再罗嗦。单件模式没有公开的构造函数,要实现对象的实例化只能依靠静态的GetInstance方法。在GetInstance方法中判断对象是否存在,存在则返回... 阅读全文
摘要:
模板方法比较简单,实际上就是在一个抽象类中写N个方法,其中包括abstract方法和已经实现的方法。模板方法就是已经实现的方法,而abstract方法是交由子类实现的。UML图:本文中的例子是创建Dota模型的例子,英雄和等级低的野怪有什么区别?区别在英雄有技能,等级低的野怪没有技能。下面会是创建模型的过程:CreateModel(创建3D模型)->SetSkill(设置技能)->Se... 阅读全文
摘要:
策略模式,是算法族的集合,将算法抽象出接口,并根据接口实现各种算法。在使用算法的具体类中设置相应的算法,为什么有策略模式的诞生,建议大家看下Headfirst,里边的介绍是相当的详细,看完后保证有茅塞顿开的感觉。UML图:策略模式中讲究的是组合,算法族的建立。本文的算法族是英雄的行动IAction接口。Dota中的英雄有走着的,有飞行的,有爬行的。分别写行走类,飞行类,爬行类继承IAction接口... 阅读全文