创建具有不同属性的对象

时间:2019-01-09 12:40:00

标签: c#

作为一种实践,我正在为零售店创建一个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;
}

3 个答案:

答案 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