私はLinqToSQLと多層を持つASP.Net MVCプロジェクトに参加しています。ユーザーは基本的にExcelファイルとアクセスファイルをアップロードし、私のサービス層はすべての検証やその他の作業を行います。抽象クラスの子クラスのインスタンス化に関する疑問
私は、 "UploadManager"という名前の抽象クラスと "UploadExcel"と "UploadAccess"の2つの子クラスを実装することを考えていました。いくつかのメソッドは、 "SaveFile"や "DeleteFile"など、両方のクラスに共通しています。しかし、他のいくつかのメソッドは "UploadExcel"クラスにのみ属する "ValidateWorksheet"のような特別な子クラスに制限されます。
私はこのような何かを設計した私は、あまりにもインタフェースを使用して考えていた
public abstract class UploadManager
{
protected void SaveFile(string fileName)
{
//Implement
}
protected void DeleteFile(string fileName)
{
//Implement
}
}
public class UploadExcel : UploadManager
{
private bool ValidateWorksheet()
{
//Implement
}
}
public class UploadAccess : UploadManager
{
private bool ValidateSomethingAboutAccess()
{
//Implement
}
}
。しかし、私の主な疑問は、インスタンス化しなければならない子クラスをどのように知ることができるのかです。アップロードされたファイルがExcelファイルの場合は「new UploadExcel()
」、アクセスファイルの場合は「new UploadAccess()
」となります。
これを行う方法はありますか?より良い方法がありますか?私はちょっとこれで失われています...
ありがとうございます!
新しいUploadExcel()または新しいUploadAccess()を実行する必要があるかどうかはどのように知ることができますか? – AndreMiranda
そして、Excelについて具体的な方法があるとしますか?それはそのクラスに限定されます... – AndreMiranda
@Andre:あなたのためにいくつかのロジック(if/else)が残っています。継承は、同じ形にフィットする問題を処理するだけです。 –