我最近阅读了一篇文章,描述了他们如何清楚地破坏SRP。现在我完全糊涂了,因为我用 setter 和 getter 编写了很长一段时间的单个类。
另外,我找到了这个,但它与SRP无关
好吧,乍一看,getter 和 setter 都没有违反单一职责原则,因为它们具有仅“属于”当前类的逻辑。他们可以访问/写入“服务”单一目的的类成员。美好的。
但是等等,让我们先定义基本术语:
数据访问 = setter 和 getter
数据处理= 数据处理,操作,例如CRUD
,验证等
如果是这样,那么我们在一个类中有两个不同的职责,从而破坏了SRP。
让我们假设一下,为了不破坏 SRP,我们将在不同的类中定义数据访问和数据操作。
class DA { // <- Data Access
public string getName() {
return this.name;
}
public string setName(name) {
this.name = name;
}
}
class DataHandler {
public DataHandler(da) { // <- Inject an instance of DA
this.da = da;
}
public bool validate() {
// validation stuff
}
}
看起来不错,因为我们没有违反上述 SRP。但是在这里,我在 DA 类中只有一个 setter 和一个 getter。
现在的问题:
1) 即使我只有一个 setter 和 getter,我是否应该始终创建另一个 DA 类,以免破坏 SRP?
2) setter 和 getter 真的会破坏SRP吗,它们不应该在任何类中使用吗?
3)如果是这样,依赖注入总是答案吗!?