一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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);
     
 
  }
 
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久综合狠狠综合狠狠 | 色综合久久六月婷婷中文字幕 | 娇小性色 | 欧美一级高清免费a | 午夜影院免费体验 | ffee性xxⅹ另类老妇hd | 色综合久久天天综合观看 | 动漫人物差差差动漫人物免费观看 | 香蕉久久夜色精品国产尤物 | 精品国产麻豆免费人成网站 | 奶茶视频官网免费 | 午夜一区二区免费视频 | 3d欧美人与禽交 | 亚洲六月丁香婷婷综合 | 女八把屁股扒开让男生添 | 精品视频中文字幕 | 欧美亚洲桃花综合 | 日本免费三片在线观看 | 亚洲精品久久啪啪网站成年 | 女老板用丝袜脚夹我好爽 | avav男人天堂 | 双性少爷受糙汉攻h | 亚洲精品综合 | 色小孩导航 | 男人插曲女人身体 | 青草园网站在线观看 | 国产精品亚洲精品日韩已方 | 男男18视频免费网站 | 爱情岛论坛亚洲自拍 | 成人免费播放器 | 波多野结衣女老师 | 亚洲福利一区二区精品秒拍 | 亚洲天堂网站在线 | 精品视频入口 | 国产女同精品 | 千金在线观看 | 国产一区二区三区在线看 | 国产精品青青在线观看香蕉 | 无码爽死成人777在线观看网站 | 国产在线视频色综合 | 女人麻豆国产香蕉久久精品 |