Tôi có kịch bản sau đây nơi tôi có các loại thuật toán bán hàng khác nhau để tính toán giá bán. FixedSaleStrategy không cần tham số basePrice trong khi tất cả các triển khai chiến lược khác cần nó. Có cách nào tốt để tránh tham số dư thừa này?Có cách nào tốt để tránh tham số phương thức không sử dụng trong một số lớp con trong khi áp dụng mẫu chiến lược?
public abstract class SalesStrategy
{
public abstract double GetPrice(double basePrice, double saleAmount);
}
public class AmountOffSale : SalesStrategy
{
public override double GetPrice(double basePrice, double salesAmount)
{
return basePrice - salesAmount;
}
}
public class FixedPriceSale : SalesStrategy
{
public override double GetPrice(double basePrice, double salesAmount)
{
return salesAmount;
}
}
Điều đầu tiên đầu tiên ... thay đổi tham số của bạn thành 'thập phân' thay vì' double'. ** Không bao giờ ** sử dụng số điểm nhị phân để xử lý tiền tệ vì chúng không thể đại diện chính xác các giá trị tiền tệ, ngay cả các giá trị đơn giản như '1.1', và làm tròn lỗi là rất quan trọng khi giao tiền của mọi người. Xem: http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding –