【发布时间】:2016-12-14 09:27:26
【问题描述】:
我只是尝试更多地了解SOLID 原则,但在我的旧(不是SOLID)代码中实现新结构时遇到了困难。
我有这个Room.Class
public class Room {
private String roomCode;
private String roomDescription;
// getter/setter
}
现在我需要翻译roomDescription。我开始创建interface
public interface ITranslation {
String findTranslation();
}
还有一个implementation
public class RoomDescriptionTranslation implements ITranslation {
@Override
public String findTranslation() {
return "translated Room";
}
在已经存在的代码中有一个服务类,它使用codes 和descriptions 创建一些Rooms。这些Rooms 也在视图中使用(作为jsp bean)。
新的要求是在视图上有翻译后的描述。
所以对我来说,问题是我应该在哪里实现现有Rooms 的翻译逻辑。
- 我应该在创建
Rooms的现有服务类中实现它吗? - 或者
RoomDescriptionTranslation应该是Room中的一个字段? - 或者我应该创建一个只翻译
description的新服务类?
只需要一个指向正确方向的指针。
【问题讨论】:
-
据我了解,如果您添加翻译逻辑,您就是添加翻译逻辑,那么一个类有两个职责。到目前为止,它还没有“单一责任”。因此,如果您需要创建一个新课程并做一些好事,或者只是懒惰并添加到现有课程中,您可以在这里接听电话。
-
您想使用房间代码查找描述文本吗?
-
@SME_Dev 我已经有了描述。但是需要它的翻译,也需要视图上的翻译描述。 (也可以覆盖现有的)
-
我不会创建任何新类型,而是将所需的功能添加到 RoomFactory 或任何已经存在的服务类。
-
我会将
description重构为一种新类型,它肯定不像现在的String那样简单。并处理新类型的所有翻译。
标签: java oop design-patterns solid-principles