二 策略模式 設計模式學習筆記

2021-08-03 06:55:44 字數 1562 閱讀 3214

(1)抽象策略角色

策略類,通常由乙個介面或者抽象類實現。定義了乙個公共介面,各種不同的演算法以不同的方式實現這個介面,context使用這個介面呼叫不同的演算法,一般使用介面或抽象類實現

(2)具體策略角色

包裝了相關的演算法和行為。實現了strategy定義的介面,提供具體的演算法實現

(3)環境角色

持有乙個策略類的引用,最終給客戶端呼叫,需要使用concretestrategy提供的演算法,內部維護乙個strategy例項,負責動態設定執行時strategy具體的實現演算法,輔助跟strategy之間的互動和資料傳遞。

(1)優點

(2)缺點(1)需求

商場收銀時採取若干**方案,如打折、**。

(2)uml類圖

a.優惠演算法類

package com.longinus.sp;

public

abstract

class cashsuper

b.具體優惠演算法類
package com.longinus.sp;

public

class

cashnormal

extends

cashsuper

}

package com.longinus.sp;

public

class

cashrebate

extends

cashsuper

@override

public

double

acceptcash(double cash)

}

package com.longinus.sp;

public

class

cashreturn

extends

cashsuper

@override

public

double

acceptcash(double cash)

}

c.優惠應用類
package com.longinus.sp;

public

class cashcontext

}public

double

getresult(double cash)

}

d.測試類
package com.longinus.sp;

public

class test

}

e.輸出結果
1000.0

700.0

800.0

設計模式學習筆記 策略模式

我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...

設計模式學習筆記 策略模式

問題 商場收銀軟體,根據單價和數量,得到總價。設計思路 兩個輸入框,分別代表單價和數量,乙個下拉框,選項有 正常,打折,滿減等演算法 商場有時需要正常收費,有時打折扣,有時滿300送100.下面是簡單工廠模式下 所有演算法的父類抽象類cashsuper public abstract class c...

設計模式學習筆記 策略模式

考慮這樣乙個場景。我們要計算兩個數的值,但是演算法不確定,可以是加減乘除的任意一種,甚至可以是加減乘除任意組合計算。就實現方式來說可以有多種。比如我可以通過if else 繼續演算法控制 class context public function calculate flag else if fla...