これが基本的な問題です。基本クラスのFooがあるとします。このクラスはデータベースを呼び出して、クラスにキャッシュするデータを取得します。
public class Foo
{
// Properties/fields go here.
public virtual void ReadData()
{
// Queries the database for information and stores it in Foo.
}
}
ここで、Barという派生クラスがあるとします。このクラスは、いくつかの追加データをキャッシュしたいと考えています。
public class Bar : Foo
{
// Additional properties/fields go here.
public override void ReadData()
{
base.ReadData();
// Queries the database for additional information and stores it in Bar.
}
}
さて、これを見ると、通常のOOPを実行している場合に行うのはやや一般的なことのように思えます。ただし、この場合、データベースに2回アクセスしているため、非効率的です。私は、このようなプラクティスをあらゆる場所で実行するレガシーコードベースに取り組んでいます。次のリリースでは、データベースアクセスの最適化(つまり、DBへの呼び出しを減らす)が必要です。
最も簡単なトリックは、基本クラスのメソッドを呼び出さないことです。代わりに、継承されたクラスが特殊なクエリを使用して、データを1回で取得できるようにします。
要件がクエリの数を減らすことである場合、oopにはこれに対する魔法はありません。
次に、別のオプションはキャッシュプロキシを持つことです。これは、キャッシュを処理するための通常のデザインパターンです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加