Java 如何命名同时执行对象创建和更新的类

Java 如何命名同时执行对象创建和更新的类,java,c#,oop,Java,C#,Oop,该类具有以下方法: CreateEmployee 更新员工 我本来打算把它命名为EmployeeCrud,但由于该类不执行删除,我认为这不是一个合适的名称。此外,术语“crud”在类名上下文中听起来也不太好。我还想把它命名为EmployeeFactory,但我的理解是,工厂是为了创造而不是更新。我也考虑过给它命名为EmployeeManager,但这表明它是一个上帝般的类,而事实并非如此 我非常感谢您提出的任何其他建议。我认为您应该使用以下两个类和一个接口: 接口:有一个接口,描述为任何对象集合

该类具有以下方法:

CreateEmployee

更新员工

我本来打算把它命名为EmployeeCrud,但由于该类不执行删除,我认为这不是一个合适的名称。此外,术语“crud”在类名上下文中听起来也不太好。我还想把它命名为EmployeeFactory,但我的理解是,工厂是为了创造而不是更新。我也考虑过给它命名为EmployeeManager,但这表明它是一个上帝般的类,而事实并非如此


我非常感谢您提出的任何其他建议。

我认为您应该使用以下两个类和一个接口:

接口:有一个接口,描述为任何对象集合(如重命名、删除、更新等)执行常见任务的方法

实现接口的类
Employee
。在构造函数中,您可以“创建并设置员工”,其中可能有多个构造函数


以及一个容器类,可以调用
Employee
类中实现的接口方法。容器类本身可以是一个列表、向量或任何您认为最好的名称。

这个类的最佳名称应该是“Employee”,因为它只在Employee上运行


如果这些方法正在访问数据存储,那么在我们使用的标准应用程序分层/贫血对象模型方法中,这可能不实用。在这种情况下,您可以调用EmployeDao或EmployeeRepository类。

执行CRUD函数的对象的两个常见名称是“Registry”和“Repository”,因此我将选择其中一个名称。例如,
EmployeeRegistry
听起来相当自我描述:

public interface EmployeeRegistry {
    Employee createEmployee(/* some args */);
    void updateEmployee(Employee e, /* more args */);
}

您可以创建一个类
EmployeeBuilder
,并在类
Employee
的公共方法中进行更新
EmployeeBuilder
可以保存某些员工共享的数据。方法
EmployeeBuilder#build()
将获取这些员工之间未共享的所有信息作为参数,并将调用
Employee
的构造函数

另一方面,
EmployeeFactory
应该是一个类,它根据一些常见数据(例如他们在哪个城市工作)创建具体的
EmployeeBuilder

一次做一件事。 对象应该按照封装约定处理自己的更新。无论处理数据的是什么,都应该简单地将依赖项参数化

如果需要,可以创建一个pool/heap/container类,以确保跟踪程序中的所有
Employee
对象。然后,将容器类与实际对象解耦,这样您就可以切换出容器或数据,并使其继续工作


类比:如果你在管理孩子,不要试图自己去微观管理或“触摸”他们。找人照顾他们。然后,作为main()主程序员,告诉每个孩子他们需要做什么。无需与他们接触——只需组织一切,以便一人跟踪,另一人给出指示,孩子们有责任改变自己的活动。

是的,但请使用以小写字母开头的方法名称。(:@AdriaanKoster其中一个标记是C;,微软使用Pascal大小写约定作为方法名。()哎呀,错过了这个标记。但是为什么Java和C都不知道…@LightningRacisinObrit—“命名那个东西”的问题经常以“主要基于意见”的方式结束关于程序。我不认为这个问题在那里会很好。@GlenH7:出于同样的原因,这里的情况更糟。这完全是基于观点的,应该关闭。你真的应该格式化你的问题。如果你觉得很难为一个类想出一个名称,它可能做得太多了。它在这里听起来也像是一个糟糕的设计,为什么要有一个呢类,然后是另一个处理它的类(或类)。最合理的做法是创建构造函数和更新方法…即OOP@LightningRacisinObrit正如格伦所说,这个问题对于程序员来说非常不合适——很快就会被否决并在那里结束,请参阅推荐阅读: