摘要: 本文会将地图显示的技术用到炸弹人显示中,并且让我们的炸弹人动起来。注:为了提升博文质量和把重点放在记录开发和迭代的思想实践,本文及后续博文将不再记录测试过程。 阅读全文
posted @ 2013-10-17 20:05 杨元超 阅读(3680) 评论(19) 推荐(6)
摘要: 现在我们将实现图片预加载和显示地图的功能需求。我采用TDD开发,大家可以看到在实现的过程中我们会修改设计,修改设计后又会修改对应的实现代码,这是一个不断迭代的过程。在有测试套件的保护下,我们可以放心地重构。 阅读全文
posted @ 2013-10-17 11:45 杨元超 阅读(4460) 评论(26) 推荐(3)
摘要: 本系列博文记录了炸弹人游戏迭代开发的过程。在开发的过程中,代码会不断重构,领域模型会不断演变,高层划分也会不断变化。博文重点在于记录面向对象思想运用、重构、迭代开发的过程,对于游戏的实现细节和原理不会深入讨论。关键词:面向对象、测试驱动开发、重构、迭代、领域模型、炸弹人游戏 阅读全文
posted @ 2013-10-16 22:54 杨元超 阅读(8382) 评论(59) 推荐(44)
摘要: 本文进入初步设计阶段,得到初步的领域模型,并对层和模块进行初步的划分。 阅读全文
posted @ 2013-10-16 22:54 杨元超 阅读(5323) 评论(22) 推荐(8)
摘要: 大家好!很高兴向大家介绍我的图片预加载控件YPreLoadImg。它可以帮助您预加载图片,并且能显示加载的进度,在预加载完成后调用指定的方法。 YPreLoadImg控件由一个名为PreLoadImg的类组成。该类的构造函数为:PreLoadImg(images, onstep, onload) 阅读全文
posted @ 2013-10-14 20:48 杨元超 阅读(1985) 评论(6) 推荐(3)
摘要: 大家好!本文介绍状态模式及其在Javascript中的应用。模式介绍定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。类图及说明State:抽象状态接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换ConcreState:具体状态每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理。通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。Context:环境 定义客户端需要的接口,并且负责具体状态的 阅读全文
posted @ 2013-10-13 19:31 杨元超 阅读(1355) 评论(4) 推荐(2)
摘要: 大家好!本文介绍迭代器模式及其在Javascript中的应用。模式介绍定义提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。类图及说明Iterator抽象迭代器抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()(或者为hasNext())是否已经访问到底部ConcreIterator具体迭代器具体迭代器角色要实现迭代器接口,完成容器元素的遍历。Aggregate抽象容器容器角色负重提供创建具体迭代器角色的接口,必然提供一个类似createIterator()(或者为iterator() 阅读全文
posted @ 2013-10-12 13:47 杨元超 阅读(1031) 评论(2) 推荐(0)
摘要: 大家好!本文介绍观察者模式及其在Javascript中的应用。模式介绍定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。类图及说明Subject:主题\发布者能够动态地增加、取消观察者。它负责管理观察者并通知观察者。Observer:观察者\... 阅读全文
posted @ 2013-09-28 14:11 杨元超 阅读(1399) 评论(2) 推荐(0)
摘要: 继续重构提取基类Structure增加测试describe("测试AClass", function () { it("子类全部实现抽象父类的抽象成员时,不抛出异常", function () { var A = YYC.AClass({ Init: fun... 阅读全文
posted @ 2013-06-08 17:54 杨元超 阅读(921) 评论(2) 推荐(1)
摘要: 大家好!今天跟大家一起分享我的OOP框架YOOP重构实践,希望能与大家一起共同学习、共同进步。本文展示了我对没有编写测试的YOOP原始版本的重构过程。通过该重构,力图将一个杂乱无章的遗留代码重构为有良好测试的、结构良好、可读性较强的高质量代码。在本次重构中,我不但会对代码结构进行重构,还会改变部分行为(如将“抽象类要检查是否实现了接口成员和父类的抽象方法”修改为“抽象类不检查是否实现了接口成员和父类的抽象方法”;将“抽象类、类只能继承1个接口”修改为“可以继承多个接口”等等)。改变行为时,必须先添加或者修改测试,然后才能小步地改变行为。原始版本(function () { /******... 阅读全文
posted @ 2013-06-08 17:52 杨元超 阅读(1667) 评论(14) 推荐(0)