しばらくの間、うまく機能している c# コードがいくつかあります。オブジェクト指向の原則の基本は理解していますが、猫の皮を剥ぐ方法は明らかに複数あると言わざるを得ません (ただし、そのフレーズは嫌いです!)。 .
したがって、次のように基本的なデータ サービス クラスとして機能する基本抽象クラスがあります (読みやすくするために大幅に簡略化しています)。
public abstract class dataservice
{
public enum OutputType : int { XmlTOJson = 0, Xml = 1, Json=2 }
protected object SomeDBcall(string StoredProcedure)
{
// Just assume we are using SQLclient/DB access..
object SomeReturnObjValue = db.ExecuteScalar(cmd);
return SomeReturnObjValue;
{
}
..基本的に、抽象クラスにいくつかの基本的なDBの取得/更新/削除呼び出しがあるかもしれません..主に、アプリにあるDB操作の基礎があるためです。
これで、基本クラスを実装するクラスができました。たとえば、私の場合は顧客クラスです。
public class Customer : dataservice
{
Public String CustomerDoSomething(string SomeDataEtc)
{
// Ok, so again for simplicity sake, we are going to use the base class to
// call a DB retrieve
object ReturningObj = SomeDBcall("my stored procedure");
return ReturningObj.ToString();
}
}
だから私の質問はこれだと思います:上記の方法は「大丈夫」ですか?必要に応じて仮想メソッドをオーバーライドできると考えていますが、この場合、DB操作を呼び出す手段として保護されているメソッドを基本クラスで使用するだけです。
明確さ/ガイダンスは非常に高く評価されています!