基于有了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);
}
}
|