ここで聞いていいのかわからないけどとりあえずC#で作ってるからここで。

データベース上のテーブルaを参照して処理をするクラスXとYがあったとする。
すぐに思いついたのはaからデータを引っ張るクラスを作ってXとYに包含させることなんだけど、
リソースやパフォーマンス上の理由からaから引っ張ったデータをXとYで共有することになった。

だからaから引っ張ったデータをキャッシュしておいて、キャッシュしたデータを返すメソッドへのアクセス方法を、
delegateかinterfaceとしてXとYにprivateで定義してpublicメソッドでそのフィールドに参照を格納できる方法を実装するのを考えた。

しかしながらそのデータはXとYにとっては結構クリティカルなデータなのに、
リソースを共有したいというアプリケーション側の都合でそれを参照する方法を外部に移譲していいのかと疑問に思って行き詰まった。

ケース・バイ・ケースだと思うけどこの場合どういう実装がいいんだろうか。
オブジェクト指向について記事書いてるページ回りながら3日くらい悩んでるんだが思いつかないので意見を聞きたい。