如果我有一个对象,比如说,一个用户类,比如说First&姓氏属性填充它的更好方法是什么:
或
答案 0 :(得分:5)
我会选择前者。我认为它更干净,即使业务层发生变化,您的User类也可以独立存在。
另请注意,前者似乎更有利于使用3层MVC架构。
答案 1 :(得分:3)
这实际上取决于你将要使用该课程的内容。它是否只是一个容器,你填充并用于显示?您是要修改数据并使用它来更新数据库吗?
基本上你所看到的是DAO / DTO功能集。在#1的情况下,您谈论的是数据传输对象(DTO),它只是数据的容器。在#2的情况下,您正在谈论数据访问对象(DAO),它是一个了解如何持久保存数据以及从何处获取数据的对象。
您缺少的是案例#3,它是一个了解与您的数据相关的业务逻辑的业务对象。即我的用户拥有什么权限,我的用户在公司内的位置(假设是业务用户)。
不幸的是,没有一个正确答案,这完全取决于你想要建立什么。
答案 2 :(得分:2)
我更喜欢前者。使用后者,最终会在最奇怪的地方强制依赖。
答案 3 :(得分:1)
我建议您阅读工厂方法和抽象工厂模式,以便将类的创建委托给除了类或页面之外的其他内容。原因如下:
页面主要关注页面内容 - 它只关心拥有名字和姓氏的东西,而不是类的类型。因此,它不应该创建类,只是要求实现。该页面只关心一个接口,可能是firstname和lastname属性,也许是save()方法。
如果班级知道业务层的细节,那么您就拥有了不需要的依赖关系。要更改业务层,您必须更改类内部或更改页面,以便创建不同的类。如果您为许多类执行此操作,则更改业务层将需要在类和/或页面层中进行许多更改。
答案 4 :(得分:0)
我会为所有业务对象实现一个抽象超类实现reloadData()方法。它可以与Web环境分开测试,Web环境不依赖于数据层。
答案 5 :(得分:0)
我看待它的方式是你必须分离关注点。当依赖性较低时,测试也会更容易。我会使用第一种方法。
答案 6 :(得分:0)
如果对象有一个调用Business.Save()方法的.Save()方法怎么办?
也许这会混淆得太多了。