激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java設計模式之Strategy模式

Java設計模式之Strategy模式

2020-05-29 14:22java教程網 JAVA教程

Strategy模式即策略模式,就是將一個算法的不同實現封裝成一個個單獨的類,這些類實現同一個接口,使用者直接使用該接口來訪問具體的算法。這個樣子,使用者就可以使用不同的算法來實現業務邏輯了。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品一级 | 丰满年轻岳中文字幕一区二区 | 国产人成精品一区二区三 | 男男羞羞视频网站国产 | 污黄视频在线观看 | 欧美一级片免费在线观看 | 欧美精品色精品一区二区三区 | 久久成人激情视频 | 国产高清永久免费 | 97久色| 亚洲天堂在线电影 | 亚洲日本韩国精品 | 红桃一区 | 久久久久电影网站 | 成年片黄色日本大片网站视频 | 国产午夜精品久久久久婷 | 久久久激情网 | 中国精品久久 | 亚洲一区二区三区四区精品 | 日韩黄色一区 | 亚洲一区成人 | 免费中文视频 | 一级成人欧美一区在线观看 | 看免费黄色一级片 | av在线免费观看网站 | 在线免费av观看 | 久久国产不卡 | 一级网站片 | 毛片免费视频观看 | 91精品国产一区二区三区动漫 | 国产精品91在线 | 视屏一区| 性插视频 | av色先锋| 999久久久精品 | 萌白酱福利视频在线网站 | 成品片a免费直接观看 | 国产精品久久av | 国产精品久久久久久婷婷天堂 | 美国av片在线观看 | 亚洲福利在线免费观看 |