擅长:python、mysql、java
<p>欢迎来到地狱。呆一会儿。;)<em>啊哼。</em></p>
<p>折扣是一团乱麻,所以你会因为不得不和他们合作而感到污点也就不足为奇了。从设计的角度来看,测试应该是<code>Discount</code>实例的一部分,即应该有<code>appliesTo(cart)</code>方法和<code>apply(cart)</code>方法。第一个告诉你是否有折扣,第二个告诉你是否有折扣。我建议<code>apply()</code>方法不会更改购物车的“用户部分”,而是修改额外的字段,这样您就可以轻松地重置购物车(删除所有折扣)并再次运行该过程。你知道吗</p>
<p>通过这种方式,您可以干净地实现两种最常见的折扣:“购买Y时免费获得X”和“购买Y$$时获得X%的折扣”。因为你不改变原来的数字,你可以很容易地申请多重折扣和回扣。你知道吗</p>
<p>我还建议用大量的单元测试来支持这一点,以确保整个过程按照您的预期运行。否则下一个折扣可能是你的最后一个了。:)</p>