干し草の中からどうやって針を見つけるの?
2023-10-13 04:15:33
質問
オブジェクト指向で干し草の山の針探しを実装する場合、基本的に3つの選択肢があります。
1. needle.find(haystack)
2. haystack.find(needle)
3. searcher.find(needle, haystack)
どちらが好きですか、またその理由は?
第3のオブジェクトの導入を避けるため、第2の選択肢を好む人がいることは知っています。しかし、少なくとも現実の世界をモデル化することが目的であるならば、3番目のアプローチの方が概念的に正しいように感じざるを得ません。
この例のサーチャーのようなヘルパーオブジェクトを導入することは、どのような場合に正当化され、どのような場合に避けるべきとお考えですか?
どのように解決するのですか?
通常、アクションは、アクションを実行する対象...この場合は干し草の山に適用されるべきですから、選択肢2が最も適切だと思います。
第4の選択肢もありますが、これは第3の選択肢よりも良いと思います。
haystack.find(needle, searcher)
この場合、検索したい方法をアクションの一部として提供することができるので、操作対象であるオブジェクトとアクションを一緒にしておくことができます。
関連
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] JavaScriptのオブジェクトのクラスを取得する方法は?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み] C++で'friend'はいつ使うべきですか?
-
[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
-
[解決済み] オブジェクト指向プログラミングにおける「インターフェイス」の定義とは?
-
[解決済み] Amazonインタビューの質問です。OO駐車場の設計【終了しました
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Inversion of Controlとは?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] Java のコア・ライブラリにおける GoF デザイン・パターンの例
-
[解決済み】依存関係逆転の原則とは何ですか、なぜそれが重要なのですか?
-
[解決済み] 継承と集計の比較【終了しました
-
[解決済み] nullを返すのは設計ミス?[クローズド]
-
[解決済み] Amazonインタビューの質問です。OO駐車場の設計【終了しました
-
[解決済み] R:スロットとは何ですか?
-
[解決済み] オブジェクト指向プログラミング(OOP)の学習やスキルアップのための良いチャレンジ/タスク/エクササイズ [終了しました]。
-
[解決済み] 抽象クラス vs. インターフェース vs. ミキシン