初識 設計模式二 策略模式

2021-09-28 16:53:01 字數 1276 閱讀 7221

package com.mybatis.strategist;

public class cash

}

package com.mybatis.strategist;

public class cashcontext

}public double getresult(double money)

}

package com.mybatis.strategist;

/** * 收費超類

*/abstract class cashsuper

package com.mybatis.strategist;

public class cashnormal extends cashsuper

}

package com.mybatis.strategist;

/** * 打折

*/public class cashdiscount extends cashsuper

@override

public double acceptcash(double money)

}

package com.mybatis.strategist;

/** * **

*/public class cashpromotion extends cashsuper

@override

public double acceptcash(double money)

return money; // 收原價}}

感受:感覺簡單工廠和策略模式很像,傻傻分不清;明白的一點就是策略模式耦合性更低,策略模式返回的是策略的上下文,而工廠模式返回的是本身物件

網上看到一些博主分析簡單工廠和策略區別:

簡單的說,

1、工廠模式根據條件生產出產品給客戶端用。而策略模式是客戶端使用傳參給context的策略(你也可以理成產品),傳入策略的不同,呼叫同樣方法得到的結果也不同。

2、工廠模式:客戶端是使用工廠類生產的物件進行操作,策略模式:客戶端使用自己傳給context的策略的物件進行操作。

簡單工廠uml: 

策略uml: 

設計模式初識 策略模式

策略模式,乙個類的行為或其演算法可以在執行時更改。在策略模式中,我們建立表示各種策略的物件和乙個行為隨著策略物件改變,同時策略物件改變context物件的執行演算法。策略模式是一種比較簡單的模式,也叫做政策模式。定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。策略模式的目的 定義一系...

初識設計模式 策略模式(Java)

strategy類為所有演算法的父類,其定義了乙個使用者使用介面 algorithminte ce 此介面用於實現各種演算法,將計算後的結果返回給呼叫處。strategya strategyb strategyc表示各種不同的算法子類,他們共同繼承strategy父類,並各自重寫algorithmi...

設計模式 二 策略模式

定義演算法家族,分別封裝起來,讓它們之間可以互相替換,讓演算法變化,不會影響到使用者 good 適合類中的成員以方法為主,演算法經常變動 簡化了單元測試 因為每個演算法都有自己的類,可以通過自己的介面單獨測試。策略模式和簡單工廠基本相同,但簡單工廠模式只能解決物件建立問題,對於經常變動的演算法應使用...