0

我有一个类可以存储数百万个数字。我想做的是覆盖获取该数字的方法,并为可读的 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以某种方式覆盖默认数字返回,而不是返回格式化的字符串?

4

4 回答 4

5

我认为最好的方法是将表示与业务逻辑分开。在这种方法中,您只需要一个getTotal()方法返回int. 一个单独的类的一个完全独立的方法将采用它int并为 UI 格式化它。

于 2013-08-15T06:21:05.913 回答
2
or patter in java to overload an individual method() that returns a number and override i with a tostring()

您可以应用装饰器模式,该模式允许将行为静态或动态添加到单个对象,而不会影响同一类中其他对象的行为

于 2013-08-15T06:27:16.237 回答
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);
     }   

}
于 2013-08-15T06:24:59.647 回答
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);}  
}
于 2013-08-15T06:29:51.103 回答