[解決済み] ユーティリティクラスは悪なのか?[クローズド]
質問
こんな質問を見かけました。 もし、"Utilities" クラスが悪であるなら、私はどこに私のジェネリックコードを置くべきですか?
そして私は考えました、なぜユーティリティクラスは悪なのか?
例えば、何十クラスもあるドメインモデルを持っているとします。 インスタンスをxml化できるようにする必要があります。 親クラスにtoXmlメソッドを作るか? MyDomainXmlUtility.toXmlヘルパークラスを作るか? これは、ビジネスニーズがドメインモデル全体にまたがる場合ですが、本当にインスタンスメソッドに属するのでしょうか? アプリケーションのXML機能に関する補助的なメソッドがたくさんある場合はどうでしょうか?
どのように解決するのか?
ユーティリティクラスは正確には悪ではありませんが、良いオブジェクト指向の設計を構成する原則に違反することがあります。良いオブジェクト指向設計では、ほとんどのクラスは単一のモノとその属性および操作のすべてを表すべきです。もし、ある物に対して操作するのであれば、そのメソッドはおそらくその物のメンバーであるべきです。
しかし、ユーティリティクラスを使っていくつかのメソッドをグループ化できる場合があります - 例として
java.util.Collections
クラスは、任意のJavaコレクションで使用できる多くのユーティリティを提供します。これらは、1 つの特定のタイプのコレクションに特化したものではなく、代わりに任意のコレクションで使用できるアルゴリズムを実装しています。
本当に、あなたがしなければならないことは、あなたの設計について考え、どこにメソッドを置くのが最も理にかなっているかを決定することです。通常、それはクラスの中の操作としてです。しかし、時には、ユーティリティクラスとして使用することもあります。ただし、ユーティリティクラスを使用する場合は、適当にメソッドを放り込むのではなく、目的や機能ごとにメソッドを整理してください。
関連
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] Abstract FactoryとFactoryのデザインパターンの違いは何ですか?
-
[解決済み】リレーショナルデータベースデザインパターン?[クローズド]
-
[解決済み】アンチパターンとは何ですか?
-
[解決済み】ラッパークラスとは何ですか?
-
[解決済み】MVCにおけるビジネスロジック【終了しました
-
[解決済み] [Builder Design パターンと Factory Design パターンの違いは何ですか?[クローズド]。
-
[解決済み] シェルスクリプトのデザインパターンやベストプラクティス [終了しました]。
-
[解決済み] デザインパターンとアーキテクチャパターンの違いは何ですか?
-
[解決済み] FacadeパターンとAdapterパターンの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
-
[解決済み】アンチパターンとは何ですか?
-
[解決済み】MVCにおけるビジネスロジック【終了しました
-
[解決済み】ファサードデザインパターンとは何ですか?
-
[解決済み] コード内のスイッチをなくす方法【非公開
-
[解決済み] Facade、Proxy、Adapter、Decoratorのデザインパターンの違い?
-
[解決済み] クロスカットの懸念事項の例
-
[解決済み] Observerデザインパターンと "Listeners "の比較
-
[解決済み] ソーシャルネットワークにアクティビティストリームを実装する方法
-
[解決済み] ServiceLocatorはアンチパターンか?