顧客向けの請求書を生成する必要がありますが、住んでいる場所によって、請求書に含まれるデータはほぼ同じですが、形式が大きく異なります。これを処理する方法として、次のようないくつかの方法を考えました。
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
ここで役立つかどうかはわかりません。代替ソリューションはありますか?主な問題は、実行時までユーザーの場所がわからないため、実行時にユーザーの場所に応じて正しいメソッドを呼び出す必要があることです。