私はかなり大規模で複雑なアプリケーションを作成しているので、コードの品質を維持するためにデザイン パターンにこだわりたいと思っています。他のほぼすべてのインスタンスで使用できるようにする必要がある 1 つのインスタンスに問題があります。
BusMonitor (ログ メッセージのクラス) のインスタンスと、このインスタンスをログ アクションに使用する他のインスタンスがあるとします。たとえば、ネットワーク プロトコルからの着信フレームを解析し、フレームに応じて異なるメッセージをログに記録する Reactor があります。
BusMonitor、Reactor、その他いくつかのインスタンスを作成する 1 つのメイン インスタンスがあります。Reactor で BusMonitor インスタンスを使用できるようにしたいのですが、設計パターンに従ってそれを行うにはどうすればよいですか?
Reactor の変数として設定するのは、私には醜いようです。
self._reactor.set_busmonitor(self._busmonitor)
BusMonitor へのアクセスが必要なすべてのインスタンスに対してこれを行います。このインスタンスのインポートはさらに悪いようです。
BusMonitor を Singleton として作成することはできますが、Class としてではなく Module として作成し、このモジュールをインポートすることを意味しますが、一貫性を維持するためにクラス内に保持したいと考えています。
どのようなアプローチが最適でしょうか?