上下文:,目前我正在进行spring + hibernate源代码的重构过程。在以下场景中,我有一个与最可取的方法相关的查询。
问题:当将值从Controller类传递到服务接口时,作为不同的参数或类对象传递值,哪个更好?在内存、可重用性等方面
示例:
myservice.getUser(login,password,....)或
myservice.getUser(userObj)发布于 2015-07-16 16:11:42
IMHO每种方法都有权衡,但我通常尝试使用模型对象(= 'User','Product‘.从人类的角度来看,这是有意义的)。我能想到的权衡点:
1)内存和垃圾收集:“User”对象稍微昂贵一些,需要在堆上分配,但它不应该成为大多数it应用程序的瓶颈。此外,GC还擅长处理这种短暂的对象。
2)“用户”有利于未来的扩展和可读性:如果您需要更多的用户详细信息(帐户、居住国.)如果有一个封装的用户是很好的,否则您的服务签名将成为噩梦.
3)多态性:如果你封装成“用户”,可能会有不同的用户类型。( "FreeUser","VIPUser"),只要它们都提供'user.isEntitledForDiscount()‘,您的服务就不关心它的确切类型。
4)对于部分填充的对象,我有一个严重的两难处境。也就是说,如果我有一个具有许多属性(电子邮件、就业历史……)的“用户”模型,但是有些服务只需要其中的分数(例如,‘登录’只需要username+password)。如果我使用的是部分填充的用户--这会使我的代码的未来维护人员感到困惑。所以我要么使用专用的LoginDetails对象,要么使用扁平的params: login(用户,密码)。除了移动到node.js之外,我没有任何神奇的解决方案;)
https://stackoverflow.com/questions/31458867
复制相似问题