假设我在服务器上上课
class MyData {
String statusA;
String statusB;
String statusC;
...
Something field20;
boolean canDoX() {
return statusA.equals('z') && statusB.equals('y')
}
}
它是从数据库实体映射的。现在为了优化创建了新类
class MyDataWithHalfOfFields {
String statusA;
String statusB;
String statusC;
...
Something field10;
}
我应该如何替换
canDoX
,以便它符合干净的架构?
Lang 是 Java,但并不重要
更新
为什么是优化。设计师想要前端有 2 个页面
为一个对象获取不必要的字段可能不会是一个大问题,但对于列表来说它已经更消耗了
我没有带java的xp,但我想问题更多的是关于oop而不是clean arch。但是,如果 java 类接受继承和抽象类,或者只是继承,则可以创建一个具有特定行为 (canDoX()) 的类,然后在这两个类中扩展。但是,有机会使用 MyData 类来代替 MyDataWithHalfOfFields 吗?
第二个类没有什么“更干净”或“优化”的地方,它只是字段较少。
如果您正在编写一个新应用程序,并同时创建一个新数据库,请从数据库中删除不必要的字段。
如果您正在为现有数据库编写应用程序,您可能希望将 ORM/实体类与其余逻辑隔离。由于您无法控制数据库,因此 ORM/实体类可能会发生更改(一些 ORM 库将从现有数据库为您创建类)。
无论哪种方式,您都应该目标是拥有一个严格表示您的数据并且没有其他逻辑的 ORM/Entity 层,然后是另一个对“原始”数据进行翻译或抽象的层(这是否必要取决于您的应用程序) ),那么您应该稍后基于抽象构建应用程序逻辑(如果不需要抽象,则基于 ORM/Entity)。