我有一个班级存储数百万的数字。我想要做的是覆盖获取该数字的方法,并为可读的UIX输出应用字符串格式化器。
这就是我必须“重载”得到的东西:
class dudViewModel {
public int gettotal () {
return this.total;
}
public String gettotal(String formated) {
return String.format("%.1f", (float)total / 1000000);
}
}
所以这是以下两个电话之间的区别:
gettotal(); // returns 23,400,000
and
gettotal("formatted"); // returns 23.4
在java中是否有更好的方法或模式来重载一个单独的方法(),它返回一个数字并使用tostring()调用覆盖i以某种方式覆盖默认数字返回,而是返回一个格式化的字符串?
答案 0 :(得分:5)
我认为最好的方法是将演示文稿与业务逻辑分开。在这种方法中,您只需要一个getTotal()
方法返回int
。一个单独的类的完全独立的方法将采用int
并为UI格式化它。
答案 1 :(得分:2)
or patter in java to overload an individual method() that returns a number and override i with a tostring()
您可以应用Decorator pattern,允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为
答案 2 :(得分:1)
将数据与其表示分开,您也可以单独测试它。
class Dud {
public int getTotal () {return this.total;}
}
class DudPresentation {
private Dud dud;
public DudPresentation(Dud dud){
this.dud = dud;
}
public String getTotal() {
return getTotal("%.1f");
}
public String getTotal(String format) {
int total = dud.getTotal();
return String.format(format, (float)total / 1000000);
}
}
答案 3 :(得分:1)
方法的作用必须在其名称中注明。在这种情况下,两个方法应该命名为不同而不是尝试重载,重载应该改变处理,而不是总效果或输出。
class dud {
public int getTotal () {return this.total;}
public String getFormattedTotal() {return String.format("%.1f", (float)total / 1000000);}
public String getFormattedTotal(String customFormat) {return String.format(customFormat, (float)total / 1000000);}
}