面向过程与面向对象意识层面的差距
客户需求:客户管理,客户分为一级客户与二级客户。
最近与朋友合作干一个项目,上面是一个简单的用户需求,我的朋友以前是干VB的,纯面向过程出身,他给出的数据库设计方案如下:
id | 一级客户名称 | 二级客户名称 | 其它 |
---|---|---|---|
1 | A | B | |
2 | A | C | |
3 | A | D | |
4 | A |
我的方案如下:
id | 客户名称 | 上级id | 其它 |
---|---|---|---|
1 | A | null | |
2 | B | 1 | |
3 | C | 1 | |
4 | D | 1 |
两份截然不同的方案,折射出两个不同的思想,在面向过程的思想里,一级客户与二级客户是截然不同的两个东西,不可归为一类,我很理解他的方案,但他却根本听不懂我的方案,不知道是真听不懂,还是不愿懂,或是我的语言已经归为幼儿园水平了?反正他就是不懂。面向对像,是把需要的东西归为一个整体看待,在这个问题上,不管是一级客户还是二级客户,或是N级客户,归根结底都属于客户,而级别也不过只是客户一个属性标识而已。
对于操作页面的设计,我的这位朋友更是把面向过程思想推到了极致,新建页面,居然可以同时创建一级与二级客户,而在编辑界面中,却无法去更改一级客户与二级客户的关系,假如客户B,由于误操作,成为了A的二级客户,在我朋友设计的编辑功能中,无法让B脱离A成为一级客户。
综上所述,以面向对象思想为主的,不要与面向过程的去合作任何东西,即使你们的关系再好,再铁,坑就在前面。