作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定这两种“模式”中哪一种是最好的。目前我使用选项 A(结合提供程序来实现持久性),但我现在倾向于选择 B,特别是考虑到单元测试能够使用“依赖注入(inject)”模型。
选项 A:
class ClassA
{
ClassA() { }
Save();
static List<ClassA> GetClassAs();
}
选项 B:
class ClassA
{
ClassA() { }
Save();
}
class ClassARepository
{
ClassARepository() { }
List<ClassA> GetClassAs();
}
我想我要问的是,类公开返回其自身实例集合的静态方法是否是一种好习惯?
似乎普遍认为选项 B 是更好的选择。看起来我前面还有很多重构 :S
最佳答案
选项 B 看起来有点像 ActiveRecord模式(我假设 ClassA 中的 Save 方法将使用 ClassARepository ?),这在某些情况下很好,但是,如果您有相当复杂的域模型,我不会使用“ActiveREcord”模式。
相反,我会使用这样的模型:
public class ClassA
{
public int Id {get; private set;}
public string Name {get; set;}
}
public class ClassARepository
{
public ClassA Get( int id );
public void Save( ClassA item );
}
这意味着所有与持久化相关的逻辑都放在 ClassARepository 类中,而 ClassA 也没有直接访问存储库的权限。
关于design-patterns - 哪种类结构更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730083/
我们构建了一个基于 Netty/NIO 的服务,我正在考虑将该服务部署到我们的生产环境中。我们部署服务的标准方式是作为 WAR,部署在 Tomcat 中。 当我在这里提出相同的方法时,我得到了“不应该
我是一名优秀的程序员,十分优秀!