А что не так то? Как еще комиссию считать, если не умножением денег на число, причем с длинной арифметикой?
Money m * Discount d . Блин, полный код можешь тут глянуть. Объект деньги не должен умножится на другой Money. Он может на объект Скидка, объект Доля и прочее. В общем нормальное ООП и DDD. Посмотри и почитай шоль. https://habr.com/ru/post/493426/