面向对象的开发讨论.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象的开发讨论

* 处理原则,单向处理。即业务逻辑只对modul处理及更新,通过modul的binding来实现对界面的刷新 面向对象的开发讨论 大纲 开发原理介绍 开发原理应用 遗留问题 开发原理介绍 结构分层的经验 面向对象的系统设计 结构分层的经验 三层架构 过度分层的缺点 当开发人员在以前的两层结构中痛苦煎熬了很长一段时间,突然看到了三层结构的解决方案的时候,一般会有终于找到了救世主的感觉。但是这种感觉往往会导致掉到另外一个同样恐怖的陷阱“过度设计”中。 犯错误的原因有很多,不过主要是因为没有一个比较明确的如何分层的指导性原则。假如说我们分层的原则是为了抽象逻辑,分三层的原因是要让业务逻辑和界面及数据库解除耦合,那么如果按照这个分层原则,我把逻辑重新归类更加细的分为四层、五层、六层行不行呢?如果不行,那是什么原因不行呢?在没有正确的原则指导下,分层技巧很容易被滥用,导致分出许多没有必要的层出来。无端的增加了开发和维护成本,以及更重要的是增加了重构的代价,降低了团队的敏捷能力。 面向对象架构设计大师Martin Fowler在介绍如何设计分布式系统的时候曾说过:分布式系统的设计原则的第一条是,不要使用分布式。他的意思当然不是说要绝对禁止使用分布式设计,而是劝导人们尽量把问题简单化。能不分布式设计的,就不要分布式设计。 套用他的这句话提出对分层的感受就是:多层结构系统的设计原则第一条是,不要使用多层结构。 当然也并不是说层数越少就越好,而是希望能清醒的认识到增加层数会增加结构的复杂性,不要轻易的作出分层的决定,一定要到感觉必须要增加一层才能解决问题的时候,再来决定增加一层。 最终定型的应用系统结构层次 分层的经验总结 建立一个完全面向对象建模的领域模型层,让这个层尽量处理多的业务逻辑。其它层尽可能的薄一点,把业务逻辑都转移到领域模型层中。 UI尽可能和领域模型贴近一点,中间不要经过太多中转,物理边界也尽可能的少。 业务对象只能有一套,也就是领域模型。只要出了领域模型层,外面全部是零散数据,没有对象的概念。 只有在领域模型层才可以处理对象。 如果一定要分布式。全部用简单数据类型通过接口访问领域模型。 面向对象的系统设计 在你打算进行面向对象的系统之前,你一定要考虑是否已经解决或能解决以下的问题: 一、对象的持久化 二、界面显示 三、远程调用 四、开发人员的面向对象思维 一、对象的持久化 对象的持久化是最容易被想到的问题,同时也是最难解决的问题。由于关系型数据库模型和面向对象模型存在一些比较大的差异,如何将你的对象保存和快速的查询出来很是头痛。虽然采用面向对象数据库虽然可以最方便的解决这个问题,但是你会面临更多其它的问题,比如备份,报表和实施维护人员的培训等等。虽然有像NHibernate这样的ORM框架来帮助你做这个工作,不过你需要去多学习一门资料不全的新技术。另外,这些开源产品中有不少的BUG,你必须有做好调试别人代码的准备,如果你无法完全掌握这些代码的话,你会死得很惨。 二、界面显示 由于界面无法直接的将复杂的对象显示出来,你在界面层又必须再做一次对象的平面化操作,将对象变成各种列表和文本框控件可以直接绑定的一维或二维数据结构。这方面目前还没有什么好的自动化方案,你必须手工做。所以我们的策略就是尽量减少这个转换步骤,就是在服务端就把面向对象转换成平面数据,然后在客户端直接绑定到控件上。在数据传输对象的选择上,可以用自定义对象,也可以用DataTable做传输对象,两者区别不是很大,各有各的好处。 如果你的对象是手工持久化的话,你做到这一步会感到很沮丧。因为平面的数据被你费了老大劲从数据库中转为对象,还没有怎么体会到面向对象的好处,又要再将对象还原成平面数据交给界面去显示,你可能会觉得非常的不值得。不如直接就把平面数据读出来交给界面去显示,既简单又方便。如果你已经产生了这个念头的话,恭喜你,你已经离全面放弃面向对象系统设计,完全退回到面向过程不远了。 三、远程调用 如果前面你还能坚持下来,到了这一步,很少人再能坚持了。面向对象对远程访问的问题考虑不足,使用面向对象开发系统的一个最大的优点是建模能力强,业务模型很清晰。比如你要找某个用户的公司名称,你可以简单的用User.Company.Name来得到该用户所属公司的名称。假如你用了多层结构,那么问题来了,你的对象是建在n层上的,而你需要在n+1层里对对象进行操作。而且n层和n+1层是远程调用。那么,如果你传个User过去,很明显用User.Company.Name是获取不到公司信息的。所以,如果你打算在n+1层做业务逻辑的话,你必须把整个对象树传递过去,这样做明显代价又太高。很多面向对象专业人士就提出了什么VO,BO,DTO,PO等等五花八门的贫血对象来企图解决这个

文档评论(0)

sandaolingcrh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档