以OO设计时的一些疑惑

OO是不是好的?在OO的时候有关联的对象如何设计?不同的系统面临的问题可能大为不同,则解决的方式也各异。最近做项目的过程中产生了一个疑惑,以前没怎么注意过,但这次却让我相当郁闷。具体如下:

举例:
产品Product,企业Company,ProductRoom为用于关联企业Company和产品Product的对象。如果以面向对象的方式和松散耦合的原则设计的话,Company和Product将没有任何的有关联的属性,他们通过ProductRoom相互查询。这样要想知道Product是属于哪个Company就只能通过ProductRoom而获得。

另外,一般在数据库中ID是没有任何业务逻辑的,设为自动增长,且用于ProductRoom中将Company和Product关联的属性用的ID,则Company,Product的ID都存在于ProductRoom中。

每个产品都是属于某企业(Company)的,所以产品(Product)在增加的时候同样要加入到产品库中(ProductRoom),但是由于产品的ID是自动增长的,那么在产品(Product)存入数据库之前是无法知道其ID的,那么ProductRoom如何获取产品(Product)的ID是非常重要的。但如果得不到产品(Product)的ID,由于产品(Product)中没有任何可以知道其归属的属性,所以产品(Product)将不属于任何企业。这是非常严重的。

这些问题是我最近做项目碰到的,由于前期是像上边说的那样设计的低耦合的对象,在后来开发中发现了严重的问题。于是我在产品(Product)中增加了一个企业ID的属性,这样不但查询时方便,之前说的那个问题也轻松解决。所以我觉得设计对象不是纯OO就好,稍微有些关联不但能提高效率还能解决可能很严重的问题。


问题已经解决,这次的收获不小。在设计对象的时候不要死抱着OO不放,要灵活应对。机械的运用不如不用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值