【发布时间】:2013-07-30 12:37:23
【问题描述】:
我有一个项目,其中实体类和业务类混合在一起。实体 bean 是业务的一部分,全部用于整个项目。
我怎样才能最好地重构这些类来分离这些层。我还希望尽可能减少对实施者的更改。最好不要更改,否则需要更新数百个参考。 我应该如何重命名这些类并解决这个问题?
混合代码示例:
// Mixed business-entity class
public final class Language {
private final Long id;
private final String code;
private final String description;
//Constructor
public Language() {
}
//getters and setters
public String getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
...
//Business is a part of this class
public static Language findByUser(User user) {
Language language;
...implementation to find user language...
return language;
}
....
}
// Implementing class
public class Messenger {
public Messenger() {
}
public static void sendEmail() {
...
Language emailLanguage = Language.findByUser(user):
...
}
}
我想将这些层分开:
// Entity Class
public final class Language {
private final Long id;
private final String code;
private final String description;
//Constructor
public Language() {
}
//getters and setters
public String getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
...
}
// 商务舱
public final class LanguageImpl {
public LanguageImpl() {
}
public static Language findByUser(User user) {
Language language;
...implementation to find user language...
return language;
}
....
}
对实现类提供最小的更改,最好不要更改。否则会因为整个代码库的引用而产生大量工作。
// Implementing class
public class Messenger {
public Messenger() {
}
public static void sendEmail() {
...
Language emailLanguage = Language.findByUser(user);
...
}
}
我如何完成这个重构? 我应该如何重命名我的课程?
任何想法都会非常有帮助!谢谢!
【问题讨论】:
-
对于 findByUser 你传入一个用户,像“user.currentLanguage”或“user.getCurrentLanguage()”这样的东西会出现在“User”实体中,这使得该功能是不必要的。
标签: refactoring code-separation