干净的架构/OOP和优化:如何组织具有相同逻辑的类

问题描述 投票:0回答:2

假设我在服务器上上课

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 个页面

  1. 包含来自 MyDataWithHalfOfFields 数组的数据的对象组
  2. MyData页面

为一个对象获取不必要的字段可能不会是一个大问题,但对于列表来说它已经更消耗了

java oop clean-architecture
2个回答
0
投票

我没有带java的xp,但我想问题更多的是关于oop而不是clean arch。但是,如果 java 类接受继承和抽象类,或者只是继承,则可以创建一个具有特定行为 (canDoX()) 的类,然后在这两个类中扩展。但是,有机会使用 MyData 类来代替 MyDataWithHalfOfFields 吗?


0
投票

第二个类没有什么“更干净”或“优化”的地方,它只是字段较少。

如果您正在编写一个新应用程序,并同时创建一个新数据库,请从数据库中删除不必要的字段。

如果您正在为现有数据库编写应用程序,您可能希望将 ORM/实体类与其余逻辑隔离。由于您无法控制数据库,因此 ORM/实体类可能会发生更改(一些 ORM 库将从现有数据库为您创建类)。

无论哪种方式,您都应该目标是拥有一个严格表示您的数据并且没有其他逻辑的 ORM/Entity 层,然后是另一个对“原始”数据进行翻译或抽象的层(这是否必要取决于您的应用程序) ),那么您应该稍后基于抽象构建应用程序逻辑(如果不需要抽象,则基于 ORM/Entity)。

© www.soinside.com 2019 - 2024. All rights reserved.