使用物件導向技術解決商品打折問題 二

2021-03-31 08:56:29 字數 624 閱讀 3612

我們現在看在checkout方法中究竟要使用要使用codepromotion這個類提供的那些資訊,首先可以肯定,getpromotionamount這個方法是必需的,而且我們希望能夠得知某一定但為什麼要打折,所以getdescription這個方法也是一定要有的,而user()是對promotion code使用過後進行的處理。所以乙個更好的方法是定義乙個介面,checkout方法中的引數型別使這個介面,而不是coldpromotion這個類,這樣一來,無論是那種打折,我們都可以通過這個介面實現。我們需要做的就是讓我們的新的打折類實現這個介面。下面就是這個介面的定義:

inte***ce promotable

本來以為這樣一來可以高枕無憂了,但是轉念一想有多了乙份擔憂,如果某一天銷售人員提出喪心病狂的要求,幾種打折一起使用該如何是好?其實這個問題也是可以解決的,那就是我們在checkout中傳遞的甚至不是promotable這個介面,而是乙個vector或者promotable的陣列,在checkout之前,我們把所有的打折資訊放入到這個vector中,在checkout的過程中,遍歷這個vector(或者陣列)。甚至我們可以寫乙個專門管理promotion的管理類,讓他來完成各種打折資訊的建立,計算出總的折扣,記錄各種打折的原因,進行打折後的處理工作。具體如何實現就要根據個人的好惡了。

用物件導向方法解決24點問題

計算24點,可以抽象描述為 求代數系統的子系統的所有運算結果為24的運算。一般情況下有很多性質,如交換律,i j j i,結合律,i j k i j k等等,為了使我這個惰人寫 方便,我去掉所有規律 這樣使運算量加幾倍了,呵呵,相信可以用來烤機了 並加上乙個一元運算子 i i i屬於sinteger...

php 物件導向之解決單繼承問題

在編寫低耦合 時,有時可能會盡量將不同型別方法放置與不同類中方便維護,但是同時我們可能某乙個物件所擁有的屬性和方法集合不同的類屬性和方法,但是 php 只有單繼承,無法通過extends 繼承多個父類來共享多個類的屬性和方法,不過雖然沒有但是我們可以通過一下 第一種方法,採用php 魔術方法 cal...

解決數三退一問題(陣列,物件導向)

500個小孩手拉手圍成乙個圈,第乙個小孩從0開始數,數到3,就淘汰出局,退出這個圈,直至剩餘最後乙個,輸出該小孩。建立小孩陣列,並將每個小孩賦布林初值為 true 表示在圈內 預設從陣列下標為0開始數,用count 計數 初值為1 當count 3 淘汰這個小孩,即將其值設為false,並將計數器c...