自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 groovy运行期间动态添加属性和方法

  我们都知道,在Groovy语言中,我们可以使用MOP特性在运行期内动态添加属性或方法。 这种添加包括两个层面的添加:第一, 是给一个类添加属性或方法。也就是说,如果我们在运行期内给一个类添加了属性或方法,那么添加了以后,所有这个类实例化的对象,都将拥有了这个属性或方法。 第二, 第二,是给一个对象添加属性或方法。也就是说,如果我们在运行期内给一个对象添加了属性或方法,那么添

2009-08-31 21:16:00 5670

原创 gmock初体验

       GMock是groovy环境下的mock解决方法。使用它可以很轻松的完成groovy的单元测试工作。它能够很好的模拟对象,辅助junit完成单元测试。       下面,就先来看一下最简单的使用的GMock代码,然后在给出详细的说明。        @WithGMockpublic class NewTest extends GroovyTestCase{ @Test

2009-08-31 19:18:00 7360 2

原创 GMock环境搭建

 在Java中,可以使用jMock或者easymock来模拟接口或者类来辅助单元测试。在groovy中,可以使用GMock来实现这一功能。首先可以对GMock的官方网站上下载GMock,官方地址是http://www.gmock.org/。目前最新版本为0.8。需要注意的是,这个版本的GMock需要groovy1.6的支持。也就是说如果groovy版本低于1.6的话就会出现错误。先做准

2009-08-31 19:11:00 2095

原创 敏捷软件开发——依赖倒置原则DIP

    首先,来对比并分析一下结构化程序设计和面向对象程序设计的区别。    结构化程序设计总是倾向于创建一些高层模块依赖于低层模块、策略依赖于细节的软件结构,该层次结构描述了高层模块怎样调用低层模块。现在,我们就分析一下这样的程序结构中存在什么样的问题。高层模块将所需服务全权委托给底层模块。如果底层模块出现了问题,那么高层模块就被“小人”“出卖”了。因为,底层模块的变动影响了高层模块,高层模

2009-08-31 12:28:00 1133 1

原创 敏捷软件开发——开放封闭原则OCP

      首先,让我们分析一下背景。什么是软件开发过程中最不稳定的因素?——答案是需求!需求在软件开发过程中时时刻刻都可能发生变化。那么,如何灵活应对变化是软件结构设计中最重要也是最困难的一个问题。好的设计带来了极大了灵活性,不好的设计则充斥着僵化的臭味。这样,也就引出了本文的主题:【开发封闭原则】。      下面,就来简单扼要的介绍一下什么是【开放封闭原则】。【开发封闭原则】包括两个特征

2009-08-29 12:24:00 1167

原创 敏捷软件开发——单一职责原则

       在说【单一职责原则】之前,先说一下什么是内聚性。      内聚性:是一个模块内的组成元素之间的功能相关性。在本文中,将这个概念延伸一下,把内聚性和引起一个模块或者类改变的作用力联系起来。      现在,就介绍一下什么是【单一职责原则】。      单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。      为什么要这样做呢?因为每一个职责都是变化的一

2009-08-28 18:29:00 732

原创 用Strategy替换条件逻辑

          首先说明一下标题,Strategy即为策略模式。本文主要介绍的使用策略模式解决实际项目中过多if-else条件判断。下面给出一个题目,然后看看原始的使用if-else的解决方法存在些什么问题。题目如下:      实现一个游戏中普通小怪的的行为。如果小怪周围60像素之内没有玩家出现,那么它就自己走走停停的闲逛。如果60像素范围之内出现了玩家,那它就会追赶玩家。如果和玩家

2009-08-27 21:38:00 1730 3

原创 重构组合方法之——提取方法

     在编程中,最常见的错误基本上来源于方法过长。如果一个方法过长,那它包含的信息量就越大,逻辑就越复杂。解决的办法就是将一个长的方法拆分为多个小的方法,使其职责明确、逻辑清晰和容易阅读。这里所谓的拆分,即为组合方法:一个大的方法由若干个小方法组成。     这里就介绍一个简单的重构:提取方法Extract Method。适用场合:程序中某些代码能够被分为一组。也就是说,这些代码完

2009-08-26 20:42:00 1946 1

原创 Java初始化与清理

       初始化和清理是涉及安全的两个问题。      首先说一下Java如何初始化。      对象的初始化工作必须在对象被调用之前完成。那么在创建对象时就需要调用类的初始化方法,而这个方法就是构造方法。为了确保构造方法名称唯一,即能够为Java编译器识别,在这里就是用于类名完全相同的方法作为构造方法。构造方法允许重载,但没有返回值。      下面就来看一下Java对象初始

2009-08-26 19:17:00 732

原创 敏捷软件开发之——软件坏味儿

      在软件开发的过程中,存在着两个级别的坏味。处于低级别的是代码坏味,在《重构-改善既有代码的设计》一书中给出了详细的说明与解决办法,这种坏味主要是指软件在代码实现中存在的。另外一种坏味是更高级别的,主要是指软件设计层面上的。下面就仔细介绍一下设计层面上的代码坏味。      首先给出问题,也就是都有哪些坏味,然后在剖析原因。软件坏味主要有:僵化性:很难对系统做出改动,因为每个

2009-08-26 13:57:00 767

原创 重构与模式——用Creation Method替换构造函数

          首先,介绍一下什么是Creation Method。所谓Creation Method,就是类中的一个静态的或非静态的负责实例化类的新实例的方法。其目的是为了代替构造函数,使用Creation Method的原因在于构造函数本身的局限性。构造函数的主要缺陷在于:构造函数的名称必须与类名相同,因此构造函数本身无法有效和高效地表达意图。而Creation Method没有命名限

2009-08-24 23:13:00 1200

GMock——groovy下的mock工具

groovy环境的mock工具,用于辅助单元测试.

2009-08-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除