6
私は現在、PHP Webアプリケーションでローカリゼーションを扱ういくつかのクラスを作成しています。この循環依存関係を取り除くにはどうすればよいですか?
クラスは次のとおりです。
- ロケール - ユーザーのロケールを設定し、取得とお得な情報、タイムゾーン、言語。
- LocaleFormat - 日付、照合、通貨フォーマットなどのフォーマットを扱います。
- タイムゾーン - タイムゾーンに関連する国やその他の機能のタイムゾーンのリストを作成することをお勧めします。
- LocaleData - ロケールデータを取得します。たとえば、アドレス形式やポストコードの正規表現などがあります。
アプリケーション全体が正常に動作しますが、タイムゾーンにもう少し追加する必要があります。
この結果、この問題が発生します。 ロケールには、ロケールのメソッドを必要とするLocaleDataのメソッドを必要とするTimezoneのメソッドが必要です。
この循環依存性をどのように壊すことができますか?私はクラスを小さなものに分割する必要がありますか?これに対処するパターンはありますか?
乾杯:)
私が直面していた問題は、互いにメソッドを呼び出すクラスのためでした。私はDIフレームワークを使用してコンストラクタインジェクションを使用しているので、依存性はDIフレームワークによってインスタンス化されます。その解決策は、Timezoneにフォーマッタのように動作するメソッドがあるため、私はLocaleFormatに移動しました。 – F21