思考
示例:可以隨意組合招數,增加三次打擊方法threefighting()。 而 工廠方法則需要呼叫三次。
class pha.yx.design.strategy.context extends %registeredobject
method fighting()
method threefighting()
}
/// d ##class(pha.yx.design.program).strategy()
classmethod strategy()
class pha.yx.design.strategy.fightingstrategy [ abstract ]
}
class pha.yx.design.strategy.strongrivalstrategy extends (%registeredobject, pha.yx.design.strategy.fightingstrategy)
}
class pha.yx.design.strategy.commonrivalstrategy extends (%registeredobject, pha.yx.design.strategy.fightingstrategy)
}
class pha.yx.design.strategy.weakrivalstrategy extends (%registeredobject, pha.yx.design.strategy.fightingstrategy)
}
class pha.yx.design.strategy.context extends %registeredobject
method fighting()
}
class pha.yx.design.program extends %registeredobject
}
遇到了普通的物件,張無忌使用聖火令
遇到了強大的物件,張無忌使用乾坤大挪移
遇到了較弱的物件,張無忌使用太極劍法
商場打折,滿300減100,打8折,正常收費,滿200減50,打5折,折9上再打折9。感興趣的同學實現後可以發我一起參考下。
大話設計模式 第二章 策略模式
策略模式 strategy 它定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化,不會影響到試用演算法的客戶。1,定義現金抽象類 現金父類 public abstract class cashsuper 2,定義各個演算法類,全部繼承自現金父類 view code 沒有活動...
第二章 策略模式
物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。收費物件生成工廠 策略模式strategy 它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的使用者。商場收銀時如何 用打折還是...
第二章 策略模式
物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。商場 程式簡單工廠uml圖 includeusing namespace std class cashsuper class cashnormal public cashsuper...