- PR -

基本クラスが同じ違うクラスを一つのクラスで使い分ける方法

投稿者投稿内容
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-04 02:15
南部です。

意図と違ってたらごめんなさい。
というか、抽象的なお題に主観もまざると難解になりますね。


マスタクラス −use→ マスタ操作クラス(3つ)

1.マスタ操作クラス(DAO)は3つあり、異なるロジック
2.操作クラスに対応するマスタクラス(編集?)は3つとも同じ内容
と解釈すると、、
コード:
public enum MasterType
{
}

//ConcreteImplementor
public class ProductEditor : IEditor 
{
}
//RefinedAbstraction
public class Master : Edit
{
  private IEditor editor;
  private Master(IEditor editor)
  {
    this.editor = editor;
  }
  public static Master CreateInstance(MasterType type)
  {
    IEditor editor;
    switch(type)
    {
      //mappingから生成かな?
      // editor = new ProductEditor();
    }
    return new Master(editor);    
  }

  public bool DoEdit()
  {
    return editor.Edit();
  }
}


すみません、ベタです。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2006-03-04 12:23
レコード操作クラスを継承するのではなく、包含するのが良いのでは?!
Steve McConnell, "CODE COMPLETE 2," 6.3, (2004)

_________________
IEEE-CSDP 2004-2007
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-04 21:34
引用:

じゃんぬねっとさんの書き込み(2006-03-03 20:48)より:

コンストラクタで?? というのが、未だにわかってなかったり... (; ̄- ̄)


 マスターテーブルなんだから、コンストラクタで、データベースからデータを取り込んでいる、とかではないでしょうか???
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2006-03-04 22:20
引用:

R・田中一郎さんの書き込み (2006-03-03 20:18) より:
...
コード:
class 商品マスター : 編集クラス {
    public 商品マスター { // コンストラクタ
        this.レコード = 商品マスターレコード操作;
    }
}
class 社員マスター : 編集クラス {
    public 社員マスター { // コンストラクタ
        this.レコード = 社員マスターレコード操作;
    }
}
class 取引先マスター : 編集クラス {
    public 取引先マスター { // コンストラクタ
        this.レコード = 取引先マスターレコード操作;
    }
}


...



コード:
class 商品マスター {
    public 商品マスター { // コンストラクタ
        this.レコード = new 編集クラス(this);
    }
}
class 社員マスター {
    public 社員マスター { // コンストラクタ
        this.レコード = new 編集クラス(this);
    }
}
class 取引先マスター {
    public 取引先マスター { // コンストラクタ
        this.レコード = new 編集クラス(this);
    }
}


こんな感じでは駄目でしょうか?
_________________
IEEE-CSDP 2004-2007
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-06 11:06
引用:

じゃんぬねっとさんの書き込み (2006-03-03 20:48) より:

引用:

R・田中一郎さんの書き込み (2006-03-03 19:41) より:

更新、削除の前後に、だらだらと事前チェックが大量に書かれています。
しかし、全く同じ動作をするので、一つにまとめて、だらだらするのを辞めたいの
です。


単純に、この「だらだらの部分」を、メソッドとして Extract しちゃダメなんですか?



そうですね。その後いろいろと考えてみたのですが、やはりそれば一番良いような
気がしてきました。
ありがとうございました。

引用:

じゃんぬねっとさんの書き込み (2006-03-03 20:48) より:

コンストラクタで?? というのが、未だにわかってなかったり... (; ̄- ̄)



コンストラクタは例としてあげただけで、勿論コンストラクタで設定することに拘
っている訳ではなかったのです。


[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-06 11:10 ]
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-06 11:09
引用:

Kazukiさんの書き込み (2006-03-03 22:25) より:

編集クラスって何ですか??



3つのマスターテーブルを編集するためのクラスです。
タイトル・レコード操作の中身をのぞいて全て同じソースコードで統一できるので、
共通化させたかったのです。

引用:

Kazukiさんの書き込み (2006-03-03 22:25) より:

私もじゃんぬさんが書かれているようにメソッドに
括りだします。



そうですね。そうすることにします。ありがとうございました。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-06 11:11
引用:

Jittaさんの書き込み (2006-03-03 23:37) より:

 今日、MVP for SQL Server な河端さん(川だったら失礼)とお話をしているときに、「O-R マッピングをして、1レコードを追加するのに、Adapter が便利だから Fill で全部持ってきて、1行追加して、Update している。何でそんな効率の悪いことする



うーむ、さすがにそんなに効率の悪いことはしていないです。

引用:

Jittaさんの書き込み (2006-03-03 23:37) より:

 ソースコードの効率も大事ですが、実行時の効率も大事じゃないでしょうか。そういうところも考えて、もう一度設計を見直してみてはいかがでしょうか。



その通りですね。もう一度設計を見直してみることにします。
ありがとうございました。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-06 11:15
引用:

nanbuさんの書き込み (2006-03-04 02:15) より:

南部です。

意図と違ってたらごめんなさい。
というか、抽象的なお題に主観もまざると難解になりますね。



すみません。質問がわかりにくかったですね。
サンプルをありがとうございました。
確かに、こんな方法もあったんですね。
ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)