作为一种实践,我正在为零售店创建一个pos系统,我一直在努力确定订购商品的最佳方式。
每个项目都有一些属性:名称,priceA,priceB,priceC。
我当时正在考虑创建一个类似于以下代码的对象,它应该可以正常工作。价格A,价格B和价格C的区别在于,价格A是客户去商店购买商品时的价格;将价格B交付到类型A的位置,将价格C交付到类型B的位置。
因此,我的问题是除价格A,价格B和价格C外,每个客户都有自己的价格,在这种情况下,我该如何订购我的物品?
例如:
Customer A : price A = 1.1, price B = 2.5, price C = 4.1
Customer B : price A = 1.2, price B = 3.6, price C = 4
void createItem()
{
Item newItem = new Item();
newItem.Name = "brick";
newItem.PriceA = 2;
newItem.PriceB = 3;
newItem.PriceC = 4;
}
答案 0 :(得分:4)
听起来像您需要一个class PricingPolicy
,您可以从中创建几个实例(例如,为每个客户创建一个单独的PricingPolicy
实例,或者为一组客户创建一个共享的PricingPolicy
实例)。
然后可以使用适用的PricingPolicy
实例将每个客户的Item
(我认为应该仅存储“基本”价格)转换为实际价格或客户组。
答案 1 :(得分:0)
您可能想要使用类似的东西:
public class Customer
{
public double PriceA;
public double PriceB;
public double PriceC;
}
public class Item
{
public string Name;
public PriceA;
public PriceB;
public PriceC;
}
然后在程序中,可以使用各自的价格创建CustomerA和B 并使用
创建一个新项目Item createItemForCustomer(Customer customer)
{
double factorA = 1.01;
double factorB = 1.2;
double factorC = 1.6;
Item newItem = new Item();
newItem.Name = "brick",
newItem.PriceA = customer.PriceA * factorA,
newItem.PriceB = customer.PriceB * factorB,
newItem.PriceC = customer.PriceC * factorC,
return newItem;
}
根据上面的信息,这是我能想到的最简单的解决方案。但是,我认为您最有可能针对的整个解决方案将需要重新思考,并且需要其他设计人员已经提出的更多设计。
答案 2 :(得分:0)
正如彼得·赛义德(Peter Said)
听起来像您需要一个PricingPolicy类
创建一个新类:
class PricingPolicy {
public decimal Price;
public string Title;
}
并将其用作List<PricingPolicy >
。
还阅读了我提出的有关代码审查的以下问题:
refactoring a set of classes that do calculation base on many parameters