
模式
文章平均质量分 54
xxcc
这个作者很懒,什么都没留下…
展开
-
足球战术->横传转移之chain of resposibility篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11180横传捣脚转移是找出进攻突破口的最好的方法,中国队这次十强赛最大的进步就是这方面。这比较符合chain of resposibility模式。整个前锋,前卫,和后卫线形成一条链,对每个队员解耦,把进攻请求按一个一个队员(对象)传过去,直到机会出现,合适的队员完成进攻。好处是队员不原创 2001-11-06 10:30:00 · 1088 阅读 · 0 评论 -
足球战术->快速反击之proxy篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11401在快速反击中使用proxy模式,可以大大提高反击的质量,首先,得分手总站在前场,不参与防守,浪费太大,而且容易被防死,所以可以使用一个速度很快的前卫做proxy来助攻,截掉对方来球后,由他来快速带球通过中场,但是不由他射门得分,而是吸引对方防守,传给真正的得分手realsubj原创 2001-12-03 08:15:00 · 1029 阅读 · 0 评论 -
足球战术之iterator篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11677使用iterator模式,让每个队员做iterator,每个位置做aggregate,有如下几个好处:1.每个位置支持不同的队员用不同方式遍历。2.简化了每个位置的接口,使其kiss,不用具有遍历的接口。3.在同一个位置支持多个队员同时遍历。代码如下:template clas原创 2002-01-02 15:05:00 · 1122 阅读 · 0 评论 -
足球战术之Builder篇
接上回:http://www.youkuaiyun.com/Develop/read_article.asp?id=11801使用builder模式,来多点进攻,可以避免abstract factory的进球方式已经定死的缺点,因为builder生产的产品差异很大,以至于无需定义一个抽象的父类,再就是很多人会把builder和observer弄混,以为subject就是director,observe原创 2002-01-13 14:30:00 · 1085 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(1)(by GOF)
习惯一:让时间来反映(reflect)。在模式写作中的最重要的活动就是反映(reflection)。Bruce Anderson,最早对我们的工作有影响的人,曾经很多年强调这一点圣谕(mantra)。让时间来阶段性的反映你所做的东东。想想你所做的系统,你所遇到的问题,和你是怎么解决(或没解决)它们的。这些阻碍是在日益变短的开发时代中的所有而且是不可想象的。不过反映是紧迫的。有比无头脑的去h原创 2002-05-20 09:40:00 · 1042 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(3)(by GOF)
习惯三:开始时做得更具体(Being Concrete Early)在我们的模式中,“意图”部分表现得更直接明了(up-front)。这是因为人们对先提出具体的术语,然后才是抽象术语理解得更好一些。“意图”部分的具体例子给读者一个问题的参考和解决方案的框架。这个部分演示的另一个方面是为什么其它对这个问题的解决方法失败了,同样用具体的术语。把“意图”部分作为一个介绍,读者能更好的理解(appreci原创 2002-05-27 09:33:00 · 1331 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(8)(by GOF)
No Silver Bullet当然采用这些习惯不会保证你成为一个成功的模式作家。而且上面所列的也不完整。不过至少它能帮助你有成效的集中你的努力。你的模式越好,它们的影响就越大。然而,不是说所有人都要成为模式作家。模式写作包括一个不小的投资,而且不是所有人都能正确表达它。所有人应该尝试模式写作一次,因为你不能知道你是否擅长于模式写作。当时间流逝,然而,我希望模式作家的数目被模式用户的数目缩减---原创 2002-05-27 09:28:00 · 1367 阅读 · 0 评论 -
设计模式讨论之abstract factory篇
设计模式讨论之abstract factory篇有人说过,“不写1M行代码,不能看设计模式。”但似乎设计模式并非那么神奇,下面用笔者的一点粗浅认识,讨论一下abstract factory设计模式的主要部分。首先,为什么要用设计模式?GOF的设计模式主要是用来减小耦合和提高复用的。而面向对象的主要原则就是能private的,就不要protected;能protected,就不要public原创 2002-09-22 12:12:00 · 2313 阅读 · 2 评论 -
足球战术之observer及memento篇
足球战术中最重要的应该是队员的跑动,而对于全体队员的跑动应该符合observer模式才对。因为作为subject的传球队员不仅仅是要对被传球的队员发送消息,而且要改变所有队员(observers)的跑动方式。广播的方式应该分为两种情况:推和拉。被传球的队员是接收推的方式,由传球队员的传球路线直接引导他的跑动路线。其他队员是接收拉的方式,由视觉接受传球队员的跑动及传球路线继而决定自己的跑原创 2001-10-13 09:02:00 · 1134 阅读 · 0 评论 -
足球战术->中场发动机之mediator篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=10848上次忘了最古老的足球战术->中场发动机战术,也就是mediator模式,在这个模式中,所有的中场组织都由中场发动机(mediator)来完成。对其他队员(colleague)的要求降低,而对中场发动机的要求大大提高。传球方式分两种,第一种由普通的observer模式得来:将中场发动原创 2001-10-13 09:41:00 · 1055 阅读 · 0 评论 -
足球战术->由攻转守之Template Method篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=10994在由攻转守的过程中可以采用Template method模式,即基本算法进攻->转换->防守不变,在子类中具体实现转换的内容,可以全速退防,或者就地抢劫等等,代码如下:void 球队::由攻转守(){ 进攻(); 中间转化过程();原创 2001-10-18 08:57:00 · 1357 阅读 · 0 评论 -
足球战术之facade篇
接上回:http://www.youkuaiyun.com/develop/article/11/11270.shtm象AC Milan的三叉戟是球队的核心,而其他队员都只是工兵型的球员。所以可以把三叉戟作为一个facade来用。好处是对客户(教练)屏蔽了其他队员,减少了客户(教练)处理的对象数目并使子系统使用起来更方便;实现了子系统与客户(教练)之间的松耦合关系,而队员之间是紧耦合的;如果需要,并不原创 2001-11-13 09:16:00 · 914 阅读 · 0 评论 -
足球战术之adapter篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11516有时候,复用一条线时会产生问题,如如果雷布罗夫加入AC milan,他和其他队员的配合可能会产生问题,这时利用舍甫琴科和其他队员的熟练配合和他和雷布罗夫以前的熟练配合,使用adapter模式,可能也会组合出不错的配合。又如Ronaldo很久没和其他队友配合,这时用全面的vier原创 2001-12-22 13:09:00 · 857 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(2)(by GOF)
习惯二:坚持(adhering to)一个结构一旦你有了原始素材,你怎么把它们写成模式的形式(form)呢?好,首先,不要假设只有一种模式的形式。没有一种形式适合于所有人。一些人喜欢像Alexander那样更通用(prosey)的风格。另一些喜欢像>中使用的更细粒度(fine-grained)方法。还有一些使用完全不同的结构。这些结构所共享的特性只是它们的结构。如果有一个大多数人同意的原创 2002-05-20 09:40:00 · 1189 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(5)(by GOF)
习惯五:有效的表达。(Presenting Effectively)你的模式的质量取决于你表达它们好不好。你可能发现世界上最好的模式,但它将不会帮助任何人除非你有效的表达它们。用“表达“(presenting)这个词我表示两件事:打印设置(typesetting)和写作风格。好的打印设置是页面设置(page layout),预览打印(typography),图象(graphics)的技巧的事,而不原创 2002-05-27 09:32:00 · 1440 阅读 · 0 评论 -
足球战术->组合进攻之composite篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11120最有效的进攻方法是几个球员组合成composite来进攻,这个composite又可以和其他球员和composite组合成新的composite,如此递归...Composite模式简化了教练(client)的指挥,因为他不用考虑某个进攻模块是单个队员还是composite,而原创 2001-11-06 14:56:00 · 1084 阅读 · 0 评论 -
足球战术->多点进攻之Abstract Factory篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11111用前锋,前卫甚至后卫来多点进攻,是最好的进攻方法,在这里可以使用abstract factory模式,用一个abstractfactory来创建一个统一的进攻位置,然后派生出具体的concrete factory(具体位置)来生产concrete product(进球),所有的原创 2001-11-06 14:44:00 · 907 阅读 · 0 评论 -
足球战术之flyweight篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11056这个是球队的基本建设,为了组建好一支国家队,而国内有成千上万的优秀队员,而每个人的特性都不同,要使他们组建成一支11个人的优秀球队,必须按照442的阵形严格区分每个队员的分工,如前腰,后腰,左前卫,右后卫等等。这样可以把每个位置作一个享元,也就是flyweight,防止产生大量原创 2001-10-25 16:29:00 · 990 阅读 · 0 评论 -
足球战术->边锋之Decorator篇
接上回:http://www.youkuaiyun.com/develop/article/11/11001.shtm在足球战术中常常使用边锋战术,也就是Decorator模式。主要优点是可以在不改变球队整体战术的前提下,增加一个左边锋或者右边锋,增加进攻的威胁。缺点是有时候并不好控制,必须要保持边前锋和全队的接口的一致性。如果全度的打法过于繁杂,则使用边前锋的代价太高。一定要打法简练实用的球队(如荷原创 2001-10-21 14:09:00 · 1109 阅读 · 0 评论 -
足球战术之strategy篇
接上回:http://www.youkuaiyun.com/develop/article/11/11042.shtm球队的每个球员都代表一种战术,也就是strategy模式。由于每个球员代表一个strategy,避免了整体球队战术的复杂性。比如米兰的德比大战,AC米兰先失一球,而表示防守战术的Albertini又状态不佳,于是换上表示进攻战术的很具活力的contra,5分钟之类连下3城,反败为胜。但原创 2001-10-23 09:30:00 · 1017 阅读 · 0 评论 -
足球战术->球员状态之state篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11330在比赛时根据球员的状态来决定他的表现,可以使用state模式。其中球队是context,球员是state,教练是client。好处是将特定状态相关的行为局部化,并且将不同状态的行为分割开来;使得状态转换显示化;而且球员可以被多个教练(client)共享。代码如下:class 球原创 2001-11-25 09:09:00 · 913 阅读 · 0 评论 -
足球战术->排兵布阵之interpreter篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11439排兵布阵时使用interpreter模式,可以让教练不用去hack,而是简单的复用就可以完成复杂的战术。在这个模式中,client是教练,context是球队,abstractexpression是基本打法,terminalexpression是单个队员的打法,nontermi原创 2001-12-08 13:10:00 · 1107 阅读 · 0 评论 -
足球战术->单刀赴会之prototype篇
接上回:http://www.youkuaiyun.com/Develop/read_article.asp?id=11949使用prototype模式,用其他队员牵制对手的注意力,然后带球队员通过个人技术甩脱对方的防守,单刀赴会得分(clone)。就像皇马在西甲半程时齐达内进的那个球。好处是在进攻进行时决定是否射门或改用其他方法;动态控制射门;改用不同球员来变化射门方式;减少进攻需要的队员数;动态换原创 2002-01-18 09:37:00 · 962 阅读 · 0 评论 -
足球战术之低耦合,高内聚及重构篇
接上回:http://www.youkuaiyun.com/Develop/read_article.asp?id=12058足球战术之低耦合,高内聚及重构篇 假设前锋和前卫之间的传球是必需的, 那么有两种传球的方案,1.后卫传球 给前卫和前锋。2.后卫传球给前卫, 然后前卫传球给前锋。后者比前者 的系统总耦合度要低,并且后卫的 内聚度要高。这有什么好处呢?这意 味着前锋可单独复用,而无须依赖 于助攻原创 2002-04-15 09:14:00 · 1345 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(4)(by GOF)
习惯四:保持模式独一无二和优点突出(Keeping Patterns Distinct and Complementary)当你开发多个模式时有一个趋向需要避免。当你写一个模式时,可能趋向于在细节和口径(scope)同时增长。在这时很容易忘记其它模式。模式之间的区别结果变得模糊了,使别人无法分组(collectively)理解模式。它们开始在口径和目的上互相重叠。这可能对作者来说非常清楚,而对新手原创 2002-05-27 09:33:00 · 1355 阅读 · 0 评论 -
足球战术->高中锋战术之singleton篇
接上回:http://www.youkuaiyun.com/develop/article/10/10935.shtm长传冲调高中锋战术,也就是singleton,是最烂,也是最快最直接的战术,它的特点是,所有球都采用长传的方式直接冲调高中锋,所有的攻势都只有一个实例,也就是高中锋。这个方法的好处是简单实用,而且易于扩展复用:)复用后的战术仍然只有一个实例,再急于扳平时可以使用。还有就是高中锋的访问方原创 2001-10-17 14:41:00 · 1413 阅读 · 0 评论 -
足球战术->声东击西之bridge篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11224训练时公布给外界的是一套,而正式比赛时是另外一套,所谓是声东击西,可以运用bridge模式。好处是训练和比赛分离,提高各自的可扩充性,而且实现细节对客户(外界)透明:)代码如下:class 训练球队{public: 训练球队(); virtual void 加强左路原创 2001-11-10 13:57:00 · 1050 阅读 · 0 评论 -
足球战术之command篇
接上回:http://www.youkuaiyun.com/develop/read_article.asp?id=11267足球中的进攻可以采用command模式,前锋的位置是command,主力前锋和替补前锋是ConcreteCommand,client是教练,invoker是中场及后卫球员。好处是将前锋和其他策动进攻的球员解耦。并且前锋也可以向其他队员一样被操纵和扩展。新增一个前锋很容易,因为无原创 2001-11-11 08:46:00 · 905 阅读 · 0 评论 -
足球战术->全攻全守之visitor篇
接上回:http://www.youkuaiyun.com/develop/article/11/11283.shtm采用全攻全守的打法,使用visitor模式,每个队员是一个visitor,每个位置是一个node,好处是每加一个新的队员,就增加一种新的进攻或防守方法,每个队员集中了他的优点和相关的打法,分离了其他打法到其他队员身上。但是位置已经定死,增加新位置比较困难。通过全场的位置结构和队员特性(原创 2001-11-17 13:11:00 · 1037 阅读 · 0 评论 -
足球战术之Factory Method篇
接上回:http://www.youkuaiyun.com/Develop/read_article.asp?id=12040使用工厂方法有以下好处,球员仅处理进球(product)接口,但每要产生一种新的进球方式,就必须让这个队员来学会这种方法,或者换个队员。球员基类在类中创建进球,而不是直接创建,为子类提供一个hook。提供平行的类层次。代码如下:class 球员{public: virt原创 2002-01-22 11:33:00 · 1085 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(0)(by GOF)
成功模式作家的七个习惯如果你认为OO开发很难做好,那么试试模式开发!我心中的数学家喜欢把它看作OO设计的“集成”:它是一段时间应用的无数小经验的集和。然而,模式开发比我在微积分课上所学的要难得多。积分并不会去干扰另一个积分,它让你独立的解决它们。(虽然知道怎么解一个经常能帮助你去解其它的。)一个模式,相反,不是工作在一个真空管中。它只提供对一个问题的解决方案;因此它要和其它模式合作。所以一个模原创 2002-05-20 09:42:00 · 1375 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(6)(by GOF)
习惯六:无拘束的迭代(Iterating Tirelessly)你不能在第一次就得到一个模式。你甚至不可能在最初10次就得到正确的模式。实际上,你可能永远不会得到完全正确的模式。模式写作是一个永远不会停止(on-going)的过程。这个领域是新的事实不会使事情好转。不过即使它不是.....甚至有很多模式的好的例子和书帮助你写它们,模式开发(像任何其他种类的开发)将是一个迭代的过程。期望写和重写你的原创 2002-05-27 09:30:00 · 1238 阅读 · 0 评论 -
成功模式(pattern)作家的七个习惯(7)(by GOF)
习惯七:收集和采纳反馈(Collecting and Incorporating Feedback)Cervantes是对的:“对布丁的验证就是在吃它的过程中”(The Proof of Pudding is in theeating)。对一个模式的测试来自于对它的实际应用。实际上,没有一个模式能被信任,直到除了它的作者外的其他人使用了它。模式有潜藏危机的特性(insidious property原创 2002-05-27 09:28:00 · 1410 阅读 · 0 评论 -
中国队失利原因之Bad Smell篇
中国队失利原因之Bad Smell篇1.Duplicated Code米卢使用怪阵,采用两个右后卫,使本来是替补,防守能力弱的徐云龙打右后卫,当孙继海受伤后,徐自然也防不住右路的进攻,而且无人替换。2.Long Method && Large Class孙继海本来是打右后卫的,不擅长于防对方的犯规,保护自己,结果早早下场为后来的失利埋下祸根。徐云龙老是前插,和跑到中后卫的位置,造成对方第二原创 2002-06-06 09:42:00 · 1395 阅读 · 0 评论 -
用32行代码表示16个设计模式
为了演示以下16个模式,用了下面32行代码。iterator,adapter,interpreter,proxy,state,visitor,command,bridge,chain of responsibility,composite,flyweight,strategy,decorator,mediator,memento,observervoid main(){for(i=0;i if原创 2002-06-22 17:38:00 · 1902 阅读 · 1 评论