Fake Objects

转载 2016年05月31日 11:11:36

Spring的创始人Rod Johnson关于伪对象:

Fake Objects: objects in appearance, but which don’t exhibit some of the characteristics of objects: identity, state, and behavior。

Let’s look at some common fake objects and why to avoid them if possible:
Transfer objects, often referred to as Data Transfer Objects (DTOs) or Value Objects. Transfer
objects are not true objects because they contain only state, without behavior. Transfer objects
are a necessary evil in distributed applications (although there’s an argument that this kind of
data should really be included in an XML structure rather than Java objects). But if we don’t
want a distributed architecture, they’re redundant and harmful, creating an unwelcome
impedance mismatch between business services and callers.
❑ Entity beans or other persistent objects generated from RDBMS tables. These reflect a relational,
rather than OO, model. They have a harmful effect on code that works with them, which
is forced to navigate relationships and cannot benefit from OO concepts such as polymorphism.
There’s also inadequate decoupling between business logic and persistent data representation.
Persistent objects in general that contain only getters and setters, without behavior. Such fake
objects force behavior that they should encapsulate to be moved into control classes such as session
beans. Not only is encapsulation violated, but the result tends to be verbose code in control

UI+BLL+DAL+Model 是当前最常用的企业级开发的三层架构。但通常BLL层弱化为控制部分,即业务对象只有行为无状态,而Model层弱化为数据库的持久化表示,即只有状态而无行为。DAL变为BLL和DB的中介,而媒介就是Model。

如何由伪对象过度到真正的OO? 创建真正的BO,即有行为又有状态,这样就取消了Model层。


  • IBelieve1974
  • IBelieve1974
  • 2017年02月01日 12:11
  • 988


1.dummy 对象四处传递,但不真正被使用,通常用来填充参数列表 2.Fake 有实际的工作表现,但通常有一些缺点不适用于产品(如内存数据库) 3.Stub 对产生的调用提...
  • jollyjumper
  • jollyjumper
  • 2016年05月23日 19:16
  • 726


mock对象是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果。fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果。 fack是一种实体的模拟,而mock...
  • bailyzheng
  • bailyzheng
  • 2016年09月04日 17:32
  • 2132

测试驱动开发中的Dummy, Stub, Spy, Mock, Fake

测试哑元(Dummy) - 只是帮助测试项目编译通过,不在具体测试里面起任何作用。 测试桩(Stub) - 只是能返回帮助测试的值 测试间谍(Spy) - 目的是测试被测单元传过来的值,也能返回值。T...
  • IBelieve1974
  • IBelieve1974
  • 2017年02月15日 11:24
  • 839


性能比较:Hard Raid> Fake Raid > Soft Raid板载Raid属于FakeRaid,windows下需要驱动程序,Linux则内置。 Ubuntu FakeRaid设置方法:h...
  • redvalley
  • redvalley
  • 2007年07月30日 22:47
  • 847


转载请署名:印风 -------------------------------------------------------------------- innodb_fake_changes ...
  • zhaiwx1987
  • zhaiwx1987
  • 2012年01月30日 15:29
  • 2265

Fake API工具:interfake快速入门

1.interfake是什么? Interfake is a tool which allows developers of client-side applications of any pla...
  • neven7
  • neven7
  • 2016年02月16日 15:31
  • 938


  • fanyue1989
  • fanyue1989
  • 2014年11月18日 21:26
  • 1440

VS2012 Unit Test——Microsoft Fakes入门

转载地址: http://www.cnblogs.com/FreeDong/p/3353111.html http://msdn.microsoft.com/zh-cn/library/hh708...
  • wlanye
  • wlanye
  • 2015年01月12日 11:05
  • 1486


1.Dummy  对象被四处传递,但是从不被真正使用。通常他们只是用来填充参数列表。  2.Fake  有实际可工作的实现,但是通常有一些缺点导致不适合用于产品(基于内存的数据库就是一个好例...
  • waterCabin
  • waterCabin
  • 2015年12月23日 15:34
  • 540
您举报文章:Fake Objects