1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.functor.example.kata.one;
18
19 import org.apache.commons.functor.Function;
20
21
22
23
24
25 public class Product {
26 public Product(String name, String sku, int cost) {
27 this(name,sku,ToMoney.from(Multiply.by(cost)));
28 }
29
30 public Product(String name, String sku, Function<? super Integer, Money> price) {
31 this.name = name;
32 this.sku = sku;
33 this.priceFunction = price;
34 }
35
36 public String getName() {
37 return name;
38 }
39
40 public Function<? super Integer, Money> getPriceFunction() {
41 return priceFunction;
42 }
43
44 public String getSku() {
45 return sku;
46 }
47
48 public void setName(String string) {
49 name = string;
50 }
51
52 public void setPriceFunction(Function<? super Integer, Money> function) {
53 priceFunction = function;
54 }
55
56 public void setSku(String string) {
57 sku = string;
58 }
59
60 public Money getPrice(int quantity) {
61 return priceFunction.evaluate(quantity);
62 }
63
64 private String name;
65 private String sku;
66 private Function<? super Integer, Money> priceFunction;
67 }