論理的には、割引モデルは何でもかまいませんので、すべてのケースを事前にプログラムできるとは限りません。あなたの質問に答える誰もがあなたが実際に必要とするものを完全に確信することもできません。ただし、現実の世界で見られる通常の種類の割引を受けると仮定すると...
大きな質問は、割引をプログラムするかどうか、またはユーザーに割引を入力してもらうかどうかです。前述のように、それらをプログラムすることはできませんが、通常は、すべてをプログラミングするのではなく、一般的な場合のようにデータ入力を増やすことを目標とします。プログラマーがすべての割引を作成するために使用されている場合でも、これはある程度適用されます。
マーティン・ファウラーは、会計システムに「転記ルール」を実装する方法の一部として、「分析パターン:再利用可能なオブジェクトモデル」の「個別インスタンスメソッド」に言及していますが、ルールはかなり似ています。詳細をお伝えしますが、著作物です。
ユーザーインターフェイスの場合は、かなり単純なユースケースを考え出すか、インタープリターとクエリビルダーを構築する必要があります。1つは単純なケース用で、もう1つはより高度なものです。インタープリターを作成する場合、パーサージェネレーターと比較してコーディングが比較的簡単であり、解析時間が遅いことはおそらく重要ではないため、これはインタープリターパターンを使用するためのかなり良いケースです。(パーサージェネレーターを使用したい場合は、私を止めさせません)。
ただし、インタープリターですべてをやろうとしないでください-ある時点で、あなたは自分の不器用な言語でプログラミングしているだけなので、実際の言語を使用することもできます。インタプリタ言語が関数をサポートしている場合(おそらくそれらの呼び出しをサポートする必要があります-それらの定義は疑わしいです)、それらは実際の言語でコーディングできます。必要以上にこの道を進んで行かないでください。
何をするにしても、最終的に誰かがプロモーションの30営業日以内に購入したかどうかに基づいて割引を希望します。営業日は、店舗の郵便番号またはクライアントのいずれかによって定義される地域に休日がない郵便番号。したがって、事前に完全なシステムを設計しようとしないでください。新しい種類の割引のためにコードを記述する必要がある場合があると想定し、それに応じて設計してください。