class-design - 我应该如何将大而臃肿的类(class)分成较小的类(class)?

标签 class-design

我有一个很大的“经理”类,我认为它做得太多了,但我不确定如何将它划分为更多逻辑单元。

一般来说类主要由以下方法组成:

class FooBarManager
{
  GetFooEntities();
  AddFooEntity(..);
  UpdateFooEntity(..);
  SubmitFooEntity(..);
  GetFooTypes();
  GetBarEntities();
}

Manager 类是我的业务逻辑的一部分,并且在数据访问级别包含另一个“Manager”类的实例,该类包含所有实体的所有 CRUD 操作。

我有来自数据访问层的不同实体,因此在 Manager 类之外有一个转换器来将数据实体转换为业务实体。

管理器类的原因是我希望在进行单元测试时能够模拟出每个“管理器”类。每个管理器类现在都超过 1000 个位置,每个都包含 40-50 个方法。我认为它们非常臃肿,并且发现将所有数据访问逻辑放入一个类中很尴尬。我应该采取哪些不同的做法?

我将如何拆分它们,是否应该使用任何特定的设计模式?

最佳答案

你真的不应该把所有的数据访问都放在一个类中,除非它是通用的。我首先将您的数据访问类拆分为每个对象或相关对象组的一个管理器,即 CompanyManager、CustomerManager 等。如果您需要通过一个“上帝类”访问管理器,您可以为每个管理器提供一个实例在您的一个真正的经理类(class)中。

关于class-design - 我应该如何将大而臃肿的类(class)分成较小的类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/153863/

相关文章:

C++ 低延迟设计 : Function Dispatch v/s CRTP for Factory implementation

C++ 缓存设计建议

javascript - Javascript/OOJS 中的子类化

php - 在类之间共享数据库连接的最佳方式

c# - 在构造函数中进行冗长的操作是否被认为是糟糕的设计?

Objective-C 在单独的文件中部分实现类

c# - 使用异常来通知未设置委托(delegate) - 设计不好?

c# - BinaryFormatter 对象图升级

C++ 类设计 - 轻松初始化/构建对象

java - 设计服务启动界面