一段无营养对话引起的口水-关于OO的一些对话

一段无营养对话引起的口水



QUOTE:

发件人 秦  隐藏详细信息 14:00 (2分钟前)
收件人
日期 2007-10-19 下午2:00
主题 与 秦 聊天
邮送域 gmail.com

13:02 秦: 请教一个问题,领域对象是什么概念?

--------------------------------------------------------------------------------
12 分钟

13:15 我: domain object
13:19 其实没有特殊的意义
13:20 秦: 名字知道,只是不了解具体的原理,不过说到原理,可能就不是一两句话可以说清楚了

--------------------------------------------------------------------------------
13 分钟

13:34 我: 呵呵,其实就是个名词。在面向对象设计时,可以把领域理解成“业务对象”,在持久层可以理解成“持久对象”,总之就是你某个领域中关注的对象。

--------------------------------------------------------------------------------
5 分钟

13:39 秦: 领域建模和领域对象有和区别?
13:41 我: 领域对象这个术语来源自“DDD”——领域驱动设计,DDD的主要方法论就是领域建模,领域建模的焦点就是实现领域对象,把核心业务逻辑封装到领域对象中。
13:42 秦: 好东西啊,虽然我还是不怎么明白
13:44 我: 不过目前在java里,受到orm的影响,领域对象一般都使用贫血模型——其中不含业务逻辑,所以领域对象的含义被弱化了,或者说被分解了。
13:48 举个例子:要写一个计算器工具。要能输入1+1,输出1+1=2,那么实现这个加法规则的对象就是领域对象。而输入输出的界面则不是,把计算结果保存到数据库中的对象也不是
一起都围绕着“问题领域”来,处理核心问题/业务的就是领域对象
13:49 秦: 领域对象持久化是什么概念?
有什么好的实现方式?
我: 保存到数据库中
orm,jdbc,保存为xml,还能有什么呢
13:50 秦: 持久化 就是保存操作?
我: 恩,持久化就是从内存到硬盘。
什么格式不管
13:51 秦: 我以为是一个保持这个对象可用
我: 呵呵
就是po
13:52 秦: 概念好多哇
我: 就是概念而已,不用管的,这些都是学院派搞出来的
13:53 秦: 感觉理论还是需要的,我现在理论太匮乏了
我: 只要理解就好了。
13:55 秦: 是啊,java这方面比较丰富
13:57 我: java主要做大型应用,有大企业和开源参与,所以发展比较严谨。
实际上做小应用没必要这么讲究
秦: 我是来学习思想的,哈哈
14:00 你来整理了哇,我觉得我们开发当中缺少就是思想
14:01 我现在还迷糊的呢,单个概念有点印象了,整体还没把握


老实说,我从来不觉得领域对象有什么用,就是一个概念而已。它的意义在于提醒我们设计上要注意解耦、注意抽象化,关注核心业务,开发围绕着业务对象进行而不是数据库
对DDD而言,数据库只是领域对象持久化的一个手段而已。正统的领域对象是包含业务模型(数据)和业务逻辑的,不过现在流行的是采用贫血模型,所以领域对 象分成为了PO+BO,前者保存数据,后者实现逻辑(有时候BO中的逻辑又被抽取到Service或Controller中去)。这两个对象层用DAO向 下(xml,database...)持久化,VO向上填充各种视图(html,excel,pdf...),组装并控制各个层次的则是 Controller。
这样的层次结构仅仅是一种选择而已,没必要一板一眼的照办不误。
java很重视思想,众说纷纭。我认为只有一个思想是根本性的:提高复用性 。这也是OOP的本意。为了提高复用性,OOP语言从语言级别提供了封装、继承、多态 三大能力;但是还不够,于是在代码级别上,程序员提出了一系列设计模式 来归纳其他技巧(在c语言时代,封装继承多态都是用设计模式来实现的);在程序设计级别上,程序员总结出的就是一些通用规则:组件化、分层思想等等 ,并用一些框架来实现它们——最常见就是MVC框架。
所以只要是符合复用性原则的设计就是好设计。不需要教条化、形而上。
那么怎么样提高复用性呢?很简单,只要模拟自然和社会就可以了 ——这是我自己独立领悟出来的,还没有其他人支持, ,也没有成熟的体系

 

 

【2007-10】

你可能感兴趣的:(设计模式,Excel,OO,领域模型,oop)