G
GOHKI
Unregistered / Unconfirmed
GUEST, unregistred user!
刚刚接触OOA和OOD,有些问题麻烦各位指点一下:
1.实体类的应用
实体类到了实现阶段会衍生出三个类:界面类,业务逻辑类,数据访问类.这三个类和实体类之间的关系应该是什么样的?是要在实现中应用实体类,还是让它转化为业务逻辑类?
例如:实体类TOrder,界面类TOrderUI,业务逻辑类TOrderBusiness,数据访问类TOrderData
方案1:保留实体类.由TOrderUI, TOrderBusiness, TOrderData引用实体类.TOrderBusiness可以提供一个TOrder的集合,用于提供多条数据的显示.这种情况下,因为TOrder基本不包含业务逻辑,所以基本上相当于一个Record,仅仅是属性的容器而已.
方案2:把TOrder转化为TOrderBusiness.TOrderBusiness包含TOrder的全部属性,并且封装业务逻辑,还要包括一些类方法(class method)如Query(TCondition;
TOrderBy)用以返回一个包含TOrderBusiness对象的集合.
我更倾向于方案2.请问哪种方案更好一些?还有其他的方案吗?
2.数据访问层的实现
是每个实体类对应一个数据访问类,还是使用同一的数据访问实现?
前者的优点是开发简单,缺点是重复较多,重用性差.
后者重用性好,但是需要使用配制文件来提供对象和表的映射关系.而且好像很难完成把数据置入相应对象的操作,恐怕只能交给业务曾实现.
3.读取数据并置入对象的问题
将表数据转化为对象的这一步到底应该在哪一层实现?
感觉好像应该在数据访问层实现,这样业务逻辑层就只涉及业务关系的实现而不必考虑数据的问题.这样的实现似乎比较符合第一个问题的方案1,因为按照方案2实现的话,会导致数据访问类引用(不是调用)业务逻辑类.
如果在业务逻辑类中实现的话,数据访问类应该如何返回数据呢?
4. 1:N关系的实现
1:N关系置入对象应该在哪一层实现?
如果在数据访问层实现的话,可以方便的使用表连接来解决问题,但是会导致数据访问层引用更多的业务逻辑类.
如果在业务逻辑层实现的话,感觉上更合理一些,因为毕竟是业务逻辑中存在的关系,而且还可以应用Lazy Initialization.但是可能效率会下降.
1:1和M:N又该如何实现置入.
5.接口的实际应用
如果我的程序不使用物理上的多层,那么定义和使用接口有什么好处?它和抽象类在使用上(不是定义上)有什么区别?
问得比较乱,请多包涵.
我刚接触OOA和OOD,这些问题可能很可笑,请不要见怪.[]
希望各位高手能多多指教,提供一下宝贵经验.
1.实体类的应用
实体类到了实现阶段会衍生出三个类:界面类,业务逻辑类,数据访问类.这三个类和实体类之间的关系应该是什么样的?是要在实现中应用实体类,还是让它转化为业务逻辑类?
例如:实体类TOrder,界面类TOrderUI,业务逻辑类TOrderBusiness,数据访问类TOrderData
方案1:保留实体类.由TOrderUI, TOrderBusiness, TOrderData引用实体类.TOrderBusiness可以提供一个TOrder的集合,用于提供多条数据的显示.这种情况下,因为TOrder基本不包含业务逻辑,所以基本上相当于一个Record,仅仅是属性的容器而已.
方案2:把TOrder转化为TOrderBusiness.TOrderBusiness包含TOrder的全部属性,并且封装业务逻辑,还要包括一些类方法(class method)如Query(TCondition;
TOrderBy)用以返回一个包含TOrderBusiness对象的集合.
我更倾向于方案2.请问哪种方案更好一些?还有其他的方案吗?
2.数据访问层的实现
是每个实体类对应一个数据访问类,还是使用同一的数据访问实现?
前者的优点是开发简单,缺点是重复较多,重用性差.
后者重用性好,但是需要使用配制文件来提供对象和表的映射关系.而且好像很难完成把数据置入相应对象的操作,恐怕只能交给业务曾实现.
3.读取数据并置入对象的问题
将表数据转化为对象的这一步到底应该在哪一层实现?
感觉好像应该在数据访问层实现,这样业务逻辑层就只涉及业务关系的实现而不必考虑数据的问题.这样的实现似乎比较符合第一个问题的方案1,因为按照方案2实现的话,会导致数据访问类引用(不是调用)业务逻辑类.
如果在业务逻辑类中实现的话,数据访问类应该如何返回数据呢?
4. 1:N关系的实现
1:N关系置入对象应该在哪一层实现?
如果在数据访问层实现的话,可以方便的使用表连接来解决问题,但是会导致数据访问层引用更多的业务逻辑类.
如果在业务逻辑层实现的话,感觉上更合理一些,因为毕竟是业务逻辑中存在的关系,而且还可以应用Lazy Initialization.但是可能效率会下降.
1:1和M:N又该如何实现置入.
5.接口的实际应用
如果我的程序不使用物理上的多层,那么定义和使用接口有什么好处?它和抽象类在使用上(不是定义上)有什么区别?
问得比较乱,请多包涵.
我刚接触OOA和OOD,这些问题可能很可笑,请不要见怪.[]
希望各位高手能多多指教,提供一下宝贵经验.