將策略的上下文的建構函式換用簡單工廠模式的話就將業務物件封裝起來了,客戶端就只要了解boy這個物件就ok了 ,不需要自己去宣告介面dreamgir的業務物件l。
//上下文
public class boy
public void want_to_eat()
public dreamgirl getgirl()
public void setgirl(dreamgirl girl)
public static void main(stringargs)
}//男孩心中抽象的夢中女孩
public abstract class dreamgirl
public class livelygirl extends dreamgirl
}//相貌平平的女孩 呵呵
public class looksmediocregirl extends dreamgirl
}//一位漂亮的女孩呵呵
public class beautifulgirl extends dreamgirl
}//一位理智的女孩 呵呵
public class sensiblegirl extends dreamgirl
}老公喜歡我做的土豆燉肉嘿嘿
介於部分朋友覺得內容不太露骨,(老鳥略過) 感覺不出策略思想到底是用來解決樣的什麼問題。
首先策略思想它強調的是用組合來封裝原有的動態行為方法。
變化的行為用組合 has a
不變的行為用繼承 is a
下面我來改下boy類
//上下文
public class boy
public void want_to_eat() //參照上面的boy類這個行為方法很明顯是變化的,所以我們需要抽象這個方法,就是通過美女介面以及具體的業務實現類(不同的girl)
public void prepare_food()
public dreamgirl getgirl()
public void setgirl(dreamgirl girl)
}很明顯我的 prepare_food() 行為是變化的,我這裡用的只能是組合,宣告介面dreamgirl是為了可以實現不同的業務型別(不同的女孩),現在的情況是dreamgirl依賴於boy 但是卻實現了業務的變化,我們這裡完全可以通過spring 來降低耦合
策略模式的擴充套件 策略列舉
各位,我給大家出個小學的題目 輸入3個引數,進行加減法運算,引數中兩個是int型的,剩下的乙個引數是string型的,只有 兩個符號可以選擇,不要考慮什麼複雜的校驗,我們做的是白箱測試,輸入的就是標準的int型別和合規的string型別,各位大俠,想想看,怎麼做,簡單得很!有非常多的實現方式,我今天...
策略模式的思考
大蝦們見笑了 這是小弟第一次寫這種文章 多多指點批評 在head first書中,作者用鴨子的例子來說明策略模式 起初,設計的模型是 有個基類duck,在基類定了了乙個變數 description,用來代表鴨子的外觀描述,還定義了乙個方法fly 它的子類mallard 野鴨 sarcelle 綠翅鴨...
重要的Java模式 策略模式
策略模式允許在允許中替換演算法。要實現該解決方案,需要將每個演算法表示為strategy 策略 類。然後應用程式委託當前的strategy類來執行特定於策略的演算法。下面示例使用role 充當strategy 介面來宣告策略行為和倆個具體來 buyer和seller來實現不同的行為 role 介面 ...