我正在为C#的购物中心建立一个项目,购物中心将有几家商店。每个商店都有不同的成本计算方法,例如
披萨店只根据订购的比萨饼和/或饮料数量计算成本:
public class PizzaShop
{
public double order(int numberOfPizzas, PIZZA pizza, int numberOfDrinks, DRINK drink)
{
double costOfPizzas;
if (pizza == PIZZA.margarita)
{
costOfPizzas = 5;
}
else
{
costOfPizzas = 6;
}
// find drinks cost similarly and return the total:
return (costOfPizzas * numberOfPizzas) + (costOfDrinks * numberOfDrinks);
}
}
(这里的PIZZA和DRINK是代表不同类型的比萨饼和饮料的枚举品。)
奶酪店根据订购的奶酪的种类和类型计算成本。
所以,我在想这个设计中的继承。比萨店和奶酪店的相似之处在于它们都是购物中的商店,它们都以某种方式计算成本(有订单方法)。然而,这种方式是不同的。因此方法" order()"将为每个不同的商店采取不同的参数。这意味着我无法使用界面或抽象类来表示我的设计来表示General Shop。什么是优雅的设计方法?
谢谢。
答案 0 :(得分:2)
这样做的一种方式是:
mc-embedded-subscribe-form