我必须为客户生成账单,但根据他们居住的地方,账单包含几乎相同的数据,但它们的格式却大不相同。我想了几种方法来处理这个问题,例如:
public void GenerateBill(User user)
{
if(user.Location == "blah blah")
{
//Code specific to this location
}
else if (user.Location == "dah dah")
{
//Code specific to this location
}
}
上述方法似乎会变得很长,尤其是当不同位置的新用户不断出现时。我想过做类似的事情:
public void GenerateBillForUserInBlah();
public void GenerateBilForUserInDah();
但上述情况似乎也会失控,成为维护的噩梦。
我的另一个想法是使用一个接口,例如IGenerateBill
,然后执行以下操作:
class UserInBlah : IGenerateBill
{
//Implement IGenerateBill members
}
但在上面,我必须为每个用户创建一个类。我可能仍然需要执行上述操作,但我认为如果这Managed Extension Framework
在这里有用的话。有替代解决方案吗?主要问题是直到运行时我才知道用户的位置,所以我必须在运行时根据用户的位置调用正确的方法。