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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美成人中文在线网站 | 色淫影院 | 国产成年人视频 | 久久综合老色鬼网站 | 视频一区二区国产无限在线观看 | 韩国三级理韩国三级理人伦 | 国产成人综合精品一区 | 69短视频| 黑人巨茎大战欧美白妇 | 狠狠澡 | www.久久精品视频 | 国产人成77777视频网站 | 穆挂英风流艳史小说 | 91李宗精品72集在线观看 | 嗯啊在线观看免费影院 | 狠狠干在线观看 | 亚洲电影成人 成人影院 | 欧美日韩国产精品va | 成人久久18免费网站入口 | 隔壁老王国产在线精品 | 天堂a免费视频在线观看 | 好涨好大我快受不了了视频网 | 欧美成人momandson | avtt在线播放 | 日本高清视频在线观看 | 亚洲国产天堂在线观看 | 日本深夜影院 | 特黄a级三级三级野战 | 国产成+人+亚洲+欧美综合 | 日本春菜花在线中文字幕 | 国产精品秒播无毒不卡 | 日产中文乱码卡一卡二 | 精品国产一区二区三区在线观看 | 午夜精品久久久久久中宇 | 国产在亚洲线视频观看 | 波多野结衣快播 | 潘金莲西门庆一级淫片aaaaaa | 成人毛片1024你懂的 | 四虎最新紧急更新地址 | 国内精品久久久久影院中国 | 国产精品理论片在线观看 |