1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
package
com.juziku.pattern.strategy;
public
interface
IPrice {
/**
* 计算价格
*/
double
calculatePrice(
double
goodsPrice);
}
/**
* 普通会员价格计算,不打折
* @author steven
*
*/
public
class
NormalPrice
implements
IPrice {
@Override
public
double
calculatePrice(
double
goodsPrice) {
return
goodsPrice;
}
}
/**
* 金卡会员价格计算,金卡会员打9.5折
* @author steven
*
*/
public
class
GoldPrice
implements
IPrice {
@Override
public
double
calculatePrice(
double
goodsPrice) {
return
goodsPrice*(
1
-
0.05
);
}
}
/**
* 钻石会员价格计算,钻石会员打9.0折
* @author steven
*
*/
public
class
DiamondPrice
implements
IPrice {
@Override
public
double
calculatePrice(
double
goodsPrice) {
return
goodsPrice*(
1
-
0.1
);
}
}
public
class
Book {
IPrice price;
public
Book(IPrice price){
this
.price = price;
}
public
double
getPrice(
double
goodsPrice){
return
price.calculatePrice(goodsPrice);
}
}
public
class
StrategyTest {
public
static
void
main(String[] args) {
//普通会员价格
Book normalBook =
new
Book(
new
NormalPrice());
System.out.println(
"普通会员价格:"
+ normalBook.getPrice(
1000
));
//金卡会员价格
Book goldBook =
new
Book(
new
GoldPrice());
System.out.println(
"金卡会员价格:"
+ goldBook.getPrice(
1000
));
//钻石会员价格
Book diamondBook =
new
Book(
new
DiamondPrice());
System.out.println(
"钻石会员价格:"
+ diamondBook.getPrice(
1000
));
}
}
|