• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:デザインパターン?)

デザインパターンとは?

このQ&Aのポイント
  • デザインパターンとは、同じ親クラスを継承せずに異なるクラスで同じ処理を実現するための設計手法のことです。
  • 例1では、データ操作の抽象クラスを作成し、データベースとファイルの操作を別クラスで実装しています。
  • 例2では、インタフェースを統合するような形でデータ操作を実現しています。操作区分に応じてデータベースかファイルの操作を呼び出します。

質問者が選んだベストアンサー

  • ベストアンサー
  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.2

後者は条件付きディスパッチャでしょうか。 戻り値についてはvoid*等で任意型を返したりはできるのではないでしょうか。

TeferiMage
質問者

お礼

ありがとうございます。 void*まではせず、親クラスのポインタでやろうと思います。 (条件付きディスパッチャを、コマンドパターンに移行しようと思います) 以下のようにしようと思います。 ・準備 ファイルアクセスクラスや、データベースアクセスクラスの親となる、「データ操作クラス型のポインタ」をメンバ変数に持っておく。 ・実装 (1)で用意した抽象的なハンドラで、 executeなり、runなり、getほにゃららなり、setほにゃららを実行

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

残念ながらこれはデザインパターンではなくアンチパターンに分類されるものでしょう。 なぜならば、後者のようなコードを極力なくすためのオブジェクト指向的な解法が前者のコードだからです。 後者の場合、一連のデータ操作処理が終わるまで使う側が操作区分の値を覚えておく必要がありますが、前者の場合はどちらの処理を行うかを意識するのはデータ操作クラスのインスタンスを生成する際にだけです。 また、新たなデータ操作方法が増えた場合に、新しい方法でのデータ操作クラスの追加に加えて手を入れる必要があるのは、前者ならばクラスの生成部分だけで済みますが、後者ならば DataManagementInterface の各メソッドに広がります。

TeferiMage
質問者

お礼

後者のケースはアンチパターンです。 普通は、 「◆例1:普通の実装」にあるように、 抽象的な共通のインタフェースを親クラスとして設計し、 派生クラスで多様化しますよね。 そのような質問ではないのです。 //-------------------------------- 「◆例1:普通の実装」ではないような、 後者のパターンを、一般的なデザインパターンに落とし込む方法は、私はうろ覚えになってしまったのですが、何個かあります。 そのパターンを思い出させて欲しいのです。 また、その実装方法(デザイン)の名前や資料を知りたいのです。 .