GiftCouponPayment クラスがあります。これには、頻繁に変更される可能性のあるビジネス戦略ロジック (GetCouponValue()) があります。現時点では、「クーポン番号が 2000 未満の場合、クーポンの値はゼロと見なされる」というロジックになっています。今後の事業戦略では、「クーポン発行日が2000年1月1日未満の場合、クーポン価値はゼロとみなすべき」と変更される可能性があります。会社の管理部門に基づいて、そのような戦略に変更できます。
GetCouponValue メソッドの戦略を変更するときにクラスを変更する必要がないように、戦略パターンを使用して GiftCouponPayment クラスをリファクタリングするにはどうすればよいでしょうか?
更新:責任を分析した後、「GiftCoupon」は「GiftCouponPayment」クラスのより良い名前になると感じています。
C# コード
public int GetCouponValue()
{
int effectiveValue = -1;
if (CouponNumber < 2000)
{
effectiveValue = 0;
}
else
{
effectiveValue = CouponValue;
}
return effectiveValue;
}
読む