日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java计数器策略模式_java设计模式(二十一)--策略模式

發布時間:2024/9/27 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java计数器策略模式_java设计模式(二十一)--策略模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于策略模式,我在很多面試題上看到過考察這一類的問題,這種模式也的確比較好用。 我感覺這種模式就是將不同實現的方法放到一個接口中,然后通過實現這個接口來實現不同的運行結果,這種模式有三部分構成: 策略接口 策略實現類 策略作用類(使用策略的類) 網絡上的專業解釋:

此模式下,一個類的行為或者其算法可以在運行時更改,我們要定義一系列的算法,把他們一個個封裝起來,并使他們可以相互替換。

實例:用此模式描述四則運算,可不斷替換。

以下是我對此實例做的類圖:

以下是我編寫代碼: 1.創建策略接口,用來存放四則運算計算器中的不同運行的方法

//策略接口

interface Strategy {

int doAction(int num1,int num2);

}

2.創建實現策略接口的四則計算實現類

public class AddStrategy implements Strategy {

@Override

public int doAction(int num1, int num2) {

return num1+num2;

}

}

public class SubtractStrategy implements Strategy{

@Override

public int doAction(int num1, int num2) {

return num1-num2;

}

}

public class MultiplyStrategy implements Strategy {

@Override

public int doAction(int num1, int num2) {

return num1*num2;

}

}

public class DivisionStrategy implements Strategy {

@Override

public int doAction(int num1, int num2) {

return num1/num2;

}

}

3.創建一個使用某種策略的類,可以根據需求不同來使用不同的策略

public class Calculator {

private int num1;

private int num2;

public Calculator(int num1, int num2) {

this.num1 = num1;

this.num2 = num2;

}

public int operate(Strategy strategy){

return strategy.doAction(num1, num2);

}

}

4.創建測試類,使用不同的策略來實現需求

public class Test {

public static void main(String[] args) {

System.out.println("=========加法計算器==========");

Calculator calculator=new Calculator(1, 2);

System.out.println("1+2="+calculator.operate(new AddStrategy()));

System.out.println("=========減法計算器==========");

Calculator calculator1=new Calculator(10, 20);

System.out.println("10-20="+calculator1.operate(new SubtractStrategy()));

System.out.println("=========乘法計算器==========");

Calculator calculator2=new Calculator(3, 5);

System.out.println("3*5="+calculator2.operate(new MultiplyStrategy()));

System.out.println("=========除法計算器==========");

Calculator calculator3=new Calculator(10, 2);

System.out.println("10/2="+calculator3.operate(new DivisionStrategy()));

}

}

5.后臺輸出

=========加法計算器==========

1+2=3

=========減法計算器==========

10-20=-10

=========乘法計算器==========

3*5=15

=========除法計算器==========

10/2=5

看完代碼之后,大家是不是感覺這種模式與狀態模式是差不多的,是差不多,他倆原理都是用的覆蓋嘛,但是狀態模式的狀態作用者里面要用到狀態的實例對象,但是這個策略模式的策略使用者卻是將策略當做參數來傳入的,這樣減少了對象的創建,提高了性能。

這種模式的優點:

1.如果我們要加一個相反數策略的話,只需要實現策略接口即可,體現了易擴展性,符合”開閉原則”。

2.算法在客戶端可以根據需要自由切換,適應了不同需求。

3.在客戶端使用將策略對象參數化的方法來調用具體策略的方法,避免在客戶端新建對象實例,提高系統性能。

缺點:

1.策略使用類要知道所有的策略類才行,然后才能自行決定要用哪一個策略。

2.隨著策略的不斷增多,策略類也會不斷的增多,提高后期的維護困難性。

總結

以上是生活随笔為你收集整理的java计数器策略模式_java设计模式(二十一)--策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。