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.UnaryFunction;
20
21
22
23
24
25
26 public class Product {
27 public Product(String name, String sku, int cost) {
28 this(name,sku,ToMoney.from(Multiply.by(cost)));
29 }
30
31 public Product(String name, String sku, UnaryFunction<? super Integer, Money> price) {
32 this.name = name;
33 this.sku = sku;
34 this.priceFunction = price;
35 }
36
37 public String getName() {
38 return name;
39 }
40
41 public UnaryFunction<? super Integer, Money> getPriceFunction() {
42 return priceFunction;
43 }
44
45 public String getSku() {
46 return sku;
47 }
48
49 public void setName(String string) {
50 name = string;
51 }
52
53 public void setPriceFunction(UnaryFunction<? super Integer, Money> function) {
54 priceFunction = function;
55 }
56
57 public void setSku(String string) {
58 sku = string;
59 }
60
61 public Money getPrice(int quantity) {
62 return priceFunction.evaluate(quantity);
63 }
64
65 private String name;
66 private String sku;
67 private UnaryFunction<? super Integer, Money> priceFunction;
68 }