- 浏览: 118239 次
- 来自: ...
文章分类
最新评论
1, 事务脚本 vs. 领域模型(Transaction Script vs. Domain Model)
作者基于功能的复杂性来区分两种模式的使用时机,却忽略了另外一个因素:功能的增加
领域模型将功能和数据置于同一个对象中,当需要增加新的功能时,只能通过为对象增加新的方法来实现,这造成了对象接口的不稳定,并无法在没有源代码的情况下进行功能增加
而事务脚本则可以灵活的进行功能的扩展:增加一个Command Handler子类,配置到系统中即可,不需要改变对象接口,不需要修改源代码
进一步,可以使用Visitor模式将领域模型和事务脚本粘合起来:核心或常用功能用领域模型建模,可以使用子类化消除复杂的逻辑判断,而预留一个accept(visitor)接口来支持功能的扩展
总之,当数据变化不大,而功能经常增加时(不是同一个功能逻辑复杂性增加,而是新功能的增加),事务脚本配合Command模式理论上拥有更好的扩展性
2,表模块(Table Module)
是“管理者(Manager)”模式的变种,管理的不是通用的内存对象,而是“实际的或虚拟的表,及其中的行”,可用于隐藏数据层,甚至根据表之间的关系,可以建立一个Table Module的继承层次
3,服务层(Service Layer)
初看到名字时,还以为基本是和“Enterprise.Solution.Patterns.Using.Microsoft.Dot.NET”中的“Service Interface”类似的模式,细看之下,发现正是最近想求证的一个模式,因为在自己的项目中混合使用了事务脚本和领域模型(前面1,事务脚本 vs. 领域模型中提到的问题和最终的方案,正是目前自己项目中的问题和方案),一直感觉不是很纯粹的设计,现在发现,目前的设计基本类似Service layer,只需要再明确划分一下“领域逻辑”和“应用逻辑”即可
4, 数据映射器(Data Mapper)
在解决只允许设置一次的属性问题时,作者除了使用标准的ctor设置外,还使用了基于状态的setter方法,这种setter在第一次被调用后,设置某个内部状态,后续的调用发生时,将抛出assertion error;最后作者说明了这种方法的缺陷:类中有个不允许大部分客户调用的方法,否则,基于反射的方法会绕过Java的保护机制,而这是不被推荐的
我也经常碰到这类问题,通常我是使用“friend interface”来解决这类问题,参见The Programming Language Idioms
5,继承映射器(Inheritance Mappers)
作者将find方法放在了具体映射器中,而不是抽象映射器,给出的原因是一般OO语言不允许改变虚函数的返回值类型,而放在抽象映射器中将不得不downcast;C++支持返回值协变,而Java从5.0开始也已经支持返回值协变,所以作者可以修改这一小节了,将find方法拉到映射器基类中;参见“抗变与协变[1]”,“抗变与协变[2]”
6,查询对象(Query Object)
基本上类似我们用的条件对象,参见http://blog.csdn.net/gongflow/archive/2004/12/11/212694.aspx
7,前端控制器(Front Controller)
Gateway的一种应用,除了Web程序外,还可以用在面向消息的系统中
8,控制器
页面控制器,前端控制器,应用控制器
9,分布模式
远程外观+服务层+服务桩+数据传输对象+控制反转,我们搭建了一个独立或嵌入式的引擎:它可以是独立运行的平台,通过Web服务和消息系统来响应外界请求;也可以是普通类库,嵌入到其它系统中去;改变配置文件中的一个配置项就可以切换两种模式,大大提高了回归测试和持续集成的速度和方便性
10,数据传输对象
作者对DTO序列化的阐述解释了.Net内置的自定义二进制序列化机制优于Java内置的自定义二进制序列化的地方:使用字典,增强了对象不同版本间的容错性,减少了序列化/反序列化的顺序依赖性;但不同版本间的容错性到底是减少了程序的错误,还是增加了潜在的危险?
11,服务器会话状态
作者对有状态会话bean和无状态会话bean之间的性能差别进行了测试,得出了有状态会话bean并不是在任何情况下都要比无状态会话bean效率低的结论,几百个并发的负载下二者差不多;这就意味着对于企业内部应用来说,性能不再是影响会话bean类型选择的因素;这基本类似Herb Sutter对“写时拷贝(COW,Copy On Write)”性能神话的颠覆
12,入口(Gateway)
我们的系统中至少对Xml和消息系统使用了gateway或者说wrapper facade,在将系统从.Net移植到J2EE时节省了大量时间
发表评论
-
The Object Primer
2004-12-11 11:21 5901,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 757错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 593前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 611前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 46714.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 642同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 608有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 619设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 673关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 711交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 613整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 804一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 746事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 840经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 739BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6771, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 721读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 755十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 710Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 658Event BusinessWare是一个事件驱动的系统 ...
相关推荐
Patterns of Enterprise Application Architecture By Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford
Martin Fowler的大作。
《企业应用架构模式》是Martin Fowler撰写的一本经典著作,对于理解并构建大型、复杂的IT系统具有极高的指导价值。这本书深入探讨了在企业级应用开发中常见的设计模式和架构决策,旨在帮助开发者提高代码质量,提升...
Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin ...
《Patterns of Enterprise Application Architecture》是由著名面向对象设计专家Martin Fowler撰写的一本关于企业级应用架构模式的书籍。虽然这本书首次出版于2002年,但其内容直至今日仍具有相当的前瞻性和实用性。...
Patterns of Enterprise Application Architecture,构架师必备,epub格式,英文原版,排版非常好。
《企业应用架构模式》是Martin Fowler于2002年出版的一本经典IT著作,它深入探讨了在构建大型企业级应用时所面临的设计和架构问题,并提供了多种可复用的解决方案,即“架构模式”。这本书是软件开发人员、系统架构...
注:英文版 作者:Martin Fowler 本书作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、...
Enterprise Application Architecture with .NET Core by Ganesan Senthilvel English | 25 Apr. 2017 | ASIN: B01M18CQNP | 564 Pages | AZW3 | 9.94 MB Architect and design highly scalable, robust, clean and...
Techniques for applying Patterns of Enterprise Application Architecture cataloged by Martin Fowler in ASP.NET applications How to organize code and apply design patterns in JavaScript