我一直在思考为我正在研究的框架提供语法糖的方法。我想专门处理Immitable对象。
说我有一个不变的对象,并希望创建它的修改版本。在您看来,具有单个静态工厂方法的非实例化类会违反OO原理吗?
作为使用字符串的示例:
public final class LOWERCASE {
private LOWERCASE() {}
public static String string( final String STRING ) {
return STRING.toLowerCase();
}
}
因此,从这个例子中我可以写:
String lowercaseString = LOWERCASE.string( targetString );
我觉得很可读。
是否有反对这种方法的条件?
最佳答案
我认为为每个方法创建一个类不是一个好主意。您可以改为创建一个仅静态方法类,例如StringUtils并实现这些方法。这样,您将调用:
字符串lowerCaseString = StringUtils.lowercase(targetString);
这也将在您键入时为您提供智能帮助。否则,您的课程清单将会太大。即使对于这个简单的示例,您也应该实现一个以上的Lowercase类,以便您还可以考虑必须考虑CulutureInfo的情况。
我认为这不会以任何方式破坏面向对象的原则,或者这是不好的设计。在其他语言(例如Ruby)中,您可以将方法直接添加到String类。以!结尾的方法!表示原始对象已修改。所有其他方法均返回修改后的副本。 Ruby on Rails框架在String类中添加了一些方法,并且关于这是否是一种好的技术存在着一些争论。当然,它绝对方便。
关于java - Java:不可变转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/280706/