面向对象对关系的处理没有关系数据库好

问题来源:

在某个信息系统中,建立了一个用户类,代表可以登录系统的用户。用户类的属性有姓名,密码等。一段时间后,想给系统添加个性化桌面的功能。于是添加了一个新的类,桌面类。桌面类与用户类存在一对一关系。每个用户应当拥有自己所对应的桌面,即用户类需要进行修改,以满足需求。这破坏了设计模式中提到的开闭原则(对修改封闭,对扩展开放)。如果不修改用户类,设计看起来会很怪,也很麻烦。

同样的问题在关系数据库里则清晰的多。开始建立一个用户表,包括姓名,密码等字段。随后,建立桌面表,桌面表包含与用户表建立关系的外键。利用查询动态的在用户表与桌面表之间建立关系即可。不用对原来的设计进行任何改动。

原因分析:

面向对象对关系的处理是静态的,也就是对象之间的关系是通过程序一次性声明的,不能动态修改。而关系数据库则可以利用查询在表之间动态建立关系。关系数据库对关系的处理更灵活,功能更强大。

解决方案:

可以将关系的描述单独抽取出来表示,采用一定的注入机制将代码注入到主类里去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值