给定一个在语义上应该是某个类型的对象的类,但是还有多个操作来操作 on 对象的类型,那么最好的方法(模式?)是什么?在这种情况下组织班级?我发现当开发人员创建对象但正在考虑程序性思维时,这种情况很常见。
示例:
Class User {
private m_userData;
function User() {}
function GetUserData() {}
function KillAllUsers(){}
function MaimAllUsers(){}
}
答案 0 :(得分:4)
从您的描述中不太清楚,但似乎“KillAllUsers”和“MainAllUsers”方法正在对一组用户进行操作。我建议创建一个自定义UserCollection,将这些方法作为实例方法创建,或者将它们创建为静态并传入一组用户。在现代领域模型术语中,您将处理UserRepository。
答案 1 :(得分:4)
我宁愿将这两个目的分成User和UserManager类。 IMO可以更清楚地分离类应该做什么。
编辑:正确观察Dunk时,应用程序中的实际名称不应该是UserManager,而是更具描述性的实际目的。通常,您会找到要使用的功能的设计模式,因此该类的名称将由该模式提供。这可能会导致诸如UserRepository或UserFactory等名称。
答案 2 :(得分:1)
抽象出要对对象执行的操作,例如通过创建接口。然后您可以稍后担心如何提供实际逻辑的实现。
通常,在处理对象集合时,例如,键入User,它将不是将实现它的User本身,而是另一个对象,例如UserService。如果绝对希望它在类级别上可用,则可以定义一个返回接口类型和默认实现的静态方法。
答案 3 :(得分:0)