基于有了OO的基础后,开始认真学习设计模式!设计模式是java设计中必不可少的!
Apple.java
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
|
package strategy; /** * * @author Andy * */ public class Apple implements Discountable { //重量 private double weight; //单价 实际开发中 设计金钱等精确计算都是BigDecimal; private double price; //按购买量打折 // private Discountor d = new AppleWeightDiscountor(); //按购买总价打折 private Discountor d = new ApplePriceDiscountor(); public double getWeight() { return weight; } public void setWeight( double weight) { this .weight = weight; } public double getPrice() { return price; } public void setPrice( double price) { this .price = price; } public Apple ( double weight, double price ){ super (); this .weight=weight; this .price=price; } @Override public void discountSell() { d.discount( this ); } } |
Banana.java
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
|
package strategy; /** * * @author Andy * */ public class Banana implements Discountable { //重量 private double weight; ////单价 实际开发中 涉及金钱等精确计算都是用BigDecimal private double price; public Banana( double weight, double price) { super (); this .weight = weight; this .price = price; } public double getWeight() { return weight; } public void setWeight( double weight) { this .weight = weight; } public double getPrice() { return price; } public void setPrice( double price) { this .price = price; } @Override public void discountSell() { //打折算法 if (weight < 5 ) { System.out.println( "Banana未打折价钱: " + weight * price); } else if (weight >= 5 && weight < 10 ) { System.out.println( "Banana打八八折价钱: " + weight * price * 0.88 ); } else if (weight >= 10 ) { System.out.println( "Banana打五折价钱: " + weight * price * 0.5 ); } } } |
Market.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package strategy; /** * * @author Andy * */ public class Market { /** * 对可打折的一类事物进行打折 * @param apple */ public static void discountSell(Discountable d) { d.discountSell(); } } |
Discountable.java
1
2
3
4
5
6
7
8
9
|
package strategy; /** * * @author Andy * */ public interface Discountable { public void discountSell(); } |
Test.java
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
|
package strategy; /** * * @author Andy * */ public class Test { /** * * @param args */ public static void main(String[] args) { // 只能对苹果打折 还不能对通用的一类事物打折 而且都是要卖什么就写什么打折算法 // 其实每类事物打折算法又是不一致的 Discountable d = new Apple( 10.3 , 3.6 ); Discountable d1= new Banana( 5.4 , 1.1 ); Market.discountSell(d); Market.discountSell(d1); } } |