【发布时间】:2017-04-28 14:06:04
【问题描述】:
我想向java.lang.String 类添加功能。我想到了如下使用装饰器模式:
public class StringDecorator {
String str;
public StringDecorator(String str)
{
this.str = str;
}
// Wrap all methods in String class such as:
public int length()
{
return str.length();
}
// Add other methods from String class here.. And then add new functions..
public void newFunction1()
{
}
}
但是,我在这里读到了 SO:https://stackoverflow.com/a/3945482,这是不合适的,因为 String 是最终的,不能扩展。用户还建议“可能需要一种不同的设计模式”。
有人可以确认在这种情况下使用装饰器模式是否确实不合适,如果可以,可以使用其他什么设计模式来代替?
【问题讨论】:
-
你没有扩展字符串,所以没关系。尽管简单地使用
getString()方法和newFunction1方法而不是重复所有字符串方法可能看起来会更好。 -
你正在做的是为字符串添加一个包装器
-
@assylias 谢谢。所以 SO 用户 Tom Tresansky 断言“装饰器模式通常通过扩展具有附加功能的原始类来工作”是不正确的?我可以在不扩展任何东西的情况下实现装饰器模式吗?这和包装模式有什么区别?
标签: java string design-patterns decorator