面向数据库与面向对象的一些理解

08-11-11 allenzl
看了这么多讨论面向对象和面向数据库设计的讨论,这里也发表一些自己的理解。

面向数据库进行系统设计时,首先考虑的是数据库、表如何设计。在做需求调研阶段,向客户了解业务需求时,就忍不住的在脑海里构思库表结构。以后的思路便一直围绕着这些库表展开。根据数据表生成VO,再由VO衍生出对它们进行操作的业务类。说到底,所有的一切,都是为了操作数据库。

面向对象设计系统时,一切围绕对象,需求最先转化为业务类,之后的一切操作都应该面向这些类产生的对象,数据库在这些过程中起到辅助作用,用来存放需要持久化的数据。

所以,面向数据库中存在对象,面向对象同时需要数据库,这两种设计方式的最大区别在于谁是核心,数据还是对象。

数据,由于它本身的流动性,决定了面向数据设计模式的过程性增强,面向数据库的设计大大弱化了对象的优势。而数据是做为对象的属性存在的,采用面向对象设计能充分发挥对象的优势,也更符合人类的思维方式。

一些浅显的认识,权当抛砖引玉。

[该贴被admin于2010-08-09 16:32修改过]

                   

2
banq
2008-11-11 17:46
基本正确。

>这两种设计方式的最大区别在于谁是核心,数据还是对象。

这就说明 面向数据库和面向对象本质是矛盾的,是矛盾的两个事物,是不可调和的,因为核心只有一个。

有不少人都否认这种矛盾,还认为实际中两个是并存的,这又是一种以存在即合理为逻辑前提的“傻子”。

在软件中存在两个核心必然导致混乱,就象一个家里,夫妻总是有一个说了算的,否则就是整体吵架;单位里也总有最后拍板的;国家也最有有一个总负责。

所以,漠视“面向数据库和面向对象本质是不匹配矛盾”这个命题的人,他连正常人的逻辑思维都没有,这样的人如何搞软件?

[该贴被banq于2008-11-12 07:19修改过]

hgeng
2009-03-24 17:23
看了两天的论坛,对于面向对象还是面向数据库还是有疑问,banq的解释很形象,我想问一下这是否就是考虑问题的出发点不同而已,而最终的程序实现不是一样的吗?

banq
2009-03-25 08:46
>而最终的程序实现不是一样

是的 完全不一样,质量 健壮性 可拓展性 维护性都不一样。

再打个不太好的比喻:我们自己制造的歼10很了不起,造出来的,但是有人当初就说了,造是造出来了,,它维护性稳定性是恶梦,这不前几天就从天上掉下来了。飞机制造灵魂和软件一样,是复杂系统的简单性,这属于哲学,用老子哲学来解释,就是大道至简,越是复杂的东西我们要让其简单,这样才有好的扩展和维护。

那么怎么样算简单呢?当然和我们人直觉自然相关的才是简单的,面向对象方法将需求分析设计等同于我们日常生活中对板凳 房子 飞机等直觉事物认识,这样,就简单了,你如果用数据建模,那么当然只有学了数学的人,才有这种数字转换思维,这不能叫直观简单啊。

所以,我们现在很多人看不懂我们先人的哲学,如道生一, 一生二 ,二生三,三生万物,怎么可能呢?数字1 2 3在数学中很常见啊,这些都已经说明我们思维被“扭曲”了。做软件也是一样,现在让学了数学算法的你做软件,你就认为软件最牛的是算法了,完全被细节蒙蔽双眼,没有大道哲学了,这些都是教育制度的受害者,是新式孔乙己啊。

http://www.jdon.com/jivejdon/thread/35372.html

[该贴被banq于2009-03-25 09:14修改过]

hgeng
2009-03-25 21:07
可能我还没到你的级别吧,认识还是要螺旋提高的。万物归一的哲学思想是不错,但是光知道这一点好像不够啊(可能架构师们是够了)在实际写程序时不知道数据在哪里,好像心里总觉得很虚。什么云计算之类的东西也搞不清楚,真希望能快快的都归一了,大家写网站就像说话聊天一样简单。最终幻想可能就像黑客帝国一样,大家活在梦里。

也借用道德经:不尚贤,使民不争;不贵难得之货,使民不为盗;不见可欲,使民心不乱。 是以圣人之治,虚其心,实其腹, 弱其志,强其骨。常使民无知无欲。 使夫智者不敢为也。为无为,则无不治。

最后只要有圣人,其他就是愚民好了。

唉,真是越学越无知,好在是学得有趣:)。

猜你喜欢
10Go 1 2 3 4 ... 10 下一页