У меня довольно много кода с использованием BigDecimal
Class, и я ненавижу неуклюжесть интерфейса.
Я облегчил задачу использования BigDecimal
s с целыми числами, создав вспомогательный класссо статическими методами со следующими методами:
compare(BigDecimal first, int second)
divide(BigDecimal dividend, BigDecimal divisor, int scale)
divide(BigDecimal dividend, int divisor, int scale)
divide(int divident, int divisor, int scale)
multiply(BigDecimal first, BigDecimal second, int scale)
multiply(BigDecimal first, int second, int scale)
multiply(int first, int second, int scale)
zeroPad(BigDecimal value, int totalLength, int scale)
Это все, что мне нужно на данный момент, и код немного более читабелен, чем раньше.Тем не менее, я прочитал, что статические методы - это «плохая» вещь, и они не следуют ОО-принципам.
Однако если я расширю BigDecimal
, я бы определил новый тип и, таким образом,придется переопределить все методы, чтобы обернуть их моим объектом, иначе я не смогу использовать результаты с расширенными методами.Это не кажется разумным.
Как бы вы подошли к этой проблеме?