掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的フレームの再作成でエラー (ID:22629)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
zebra 2006/09/05(火) 06:44:31 >>オブジェクト指向ではクラス間の依存関係を、なるべく弱くしないといけません。 >確かにこの意見は間違っていないと思いますが、今回の話に限って言えば >当てはまらないように思います。 >procedure TForm1.Button1Click(Sender: TObject); >begin > a := TFrame2.Create(self); >end; > >procedure TForm1.Button1Click(Sender: TObject); >begin > TFrame2.GetInstance(self, 100, 100); >end; > >この二つのメソッドにおいて、TForm1とTFrame2の二つのクラス間の結合度は同じだと思います。 上の場合、Form1からオブジェクト「a」を操作できますよね、またオブジェクトの作成をForm1が管理していますね。 下の場合はForm1からFrame2へのアクセスは全くできませんし、オブジェクトの生死は知る必要もありません。 >クラス間の結合度を弱めるためにはTFrame2という具体的なクラス名を書かずに抽象クラスをかますべきなんじゃないでしょうか? そうですね、その方が確か抽象化できますね。 >シングルトンに限って言えば結合度を弱める働きは無いように思うのですがどうなんでしょうか。 相手クラスから、実際にどのクラスが生成されているか分からないと言う意味で抽象化されているとおもいますよ。 >あと、シングルトンはインスタンスが一つ以上作成されないことが保障されなければいけません、その為にはコンストラクタをプライベートにして外から呼ばれないようにしなければならないと思うのですが。 >Delphiではどのように実現するのでしょうか? 私もはっきりとは言えません、Q&Aで出してみたらどうですか? >>依存関係が強いとメンテや拡張が大変になります。 >>例えば、今Freeを使っても大丈夫だとしても >>プログラムを拡張(継承)してFreeが使えなくなった場合 >>二つのクラスを修正しないといけなくなりますね。 >Freeが使えなくなる場合とはどのような場合なんでしょうか? >また、その様な場合でもReleaseは使えるのですか? Frameさんが発言しているパターンの時ではないですか? > そのフォームまたはその子フォームのイベントハンドラ以外からで、Freeをすることはかまわない つまり、Freeの呼出し元がフォームまたは子フォームのイベントハンドラから呼ばれる場合ですね その場合は、Releaseを使います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.