C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クラスの依存関係について VB.NET


(過去ログ 128 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■75750 / inTopicNo.1)  クラスの依存関係について VB.NET
  
□投稿者/ kouei3 (4回)-(2015/04/29(Wed) 18:31:06)
kouei3 さんの Web サイト

分類:[.NET 全般] 

こんにちは

ファイルのアップロード機能がついてなかったのでお手数かと思いますが
下記、ドライブで確認して下さい。

VB.NETのWindowsフォームアプリケーションにて

MainMenuとMainMenu管理用クラス

上記に付随し各、サブシステムとサブシステム管理用クラス

データベースとのやり取りを行う管理用クラスを作成しようかと考えています。

質問事項は下記です。
データベース管理用クラスですが、現在ですとMainMenuForLogicクラスで
データベース管理用クラスのインスタンスを生成し、各クラスのコンストラクタで
参照を持ち回りサブシステムで使用する予定です。

そうすると、データーベース管理クラスへの依存がかなり強まり
慣習といいますか、主流のやり方として他にどのような管理手法があるか
気になっています。何かあれば教えて下さい。よろしくお願いします。

https://drive.google.com/file/d/0B0E1t-2wZXtnMXQ4YVE0Y00wRlk/view?usp=sharing
引用返信 編集キー/
■75793 / inTopicNo.2)  Re[1]: クラスの依存関係について VB.NET
□投稿者/ Azulean (473回)-(2015/05/01(Fri) 21:20:59)
No75750 (kouei3 さん) に返信
> そうすると、データーベース管理クラスへの依存がかなり強まり
> 慣習といいますか、主流のやり方として他にどのような管理手法があるか
> 気になっています。何かあれば教えて下さい。よろしくお願いします。

主流と言われるとコメントが難しいのですが、1つの実装に集中してしまっている現象を緩和させる策としてコメントします。
そのサブシステムが、データベースそのものに依存しないように考えることでしょうか。

依存関係逆転の法則
http://d.hatena.ne.jp/asakichy/20090128/1233144989

・サブシステムが必要とする振る舞いをインターフェースで定義する。
・サブシステムのオブジェクトを生成するときのそのインターフェースを実現したクラスのオブジェクトを渡す。
・インターフェースを実現するクラスはデータベース管理クラスに処理を委譲する。

このようにすると、サブシステムはデータベース管理クラスに依存しなくなり、変更の影響を受けづらくなります。
引用返信 編集キー/
■75803 / inTopicNo.3)  Re[2]: クラスの依存関係について VB.NET
□投稿者/ kouei3 (5回)-(2015/05/04(Mon) 16:02:19)
kouei3 さんの Web サイト
No75793 (Azulean さん) に返信
> ■No75750 (kouei3 さん) に返信
>>そうすると、データーベース管理クラスへの依存がかなり強まり
>>慣習といいますか、主流のやり方として他にどのような管理手法があるか
>>気になっています。何かあれば教えて下さい。よろしくお願いします。
>
> 主流と言われるとコメントが難しいのですが、1つの実装に集中してしまっている現象を緩和させる策としてコメントします。
> そのサブシステムが、データベースそのものに依存しないように考えることでしょうか。
>
> 依存関係逆転の法則
> http://d.hatena.ne.jp/asakichy/20090128/1233144989
>
> ・サブシステムが必要とする振る舞いをインターフェースで定義する。
> ・サブシステムのオブジェクトを生成するときのそのインターフェースを実現したクラスのオブジェクトを渡す。
> ・インターフェースを実現するクラスはデータベース管理クラスに処理を委譲する。
>
> このようにすると、サブシステムはデータベース管理クラスに依存しなくなり、変更の影響を受けづらくなります。

回答ありがとうございます。
上記件で、もし実際のコード例があるサイト等ありましたら教えて下さい。
インターフェイスの持ち回りが少し判り辛かったです。

引用返信 編集キー/
■75804 / inTopicNo.4)  Re[3]: クラスの依存関係について VB.NET
□投稿者/ Azulean (475回)-(2015/05/04(Mon) 18:07:40)
No75803 (kouei3 さん) に返信
> 上記件で、もし実際のコード例があるサイト等ありましたら教えて下さい。
> インターフェイスの持ち回りが少し判り辛かったです。

その法則の名前で検索してみましたか?
独自の用語というわけではありませんから、いくつか Web サイトが見つかるはずです。
それでもわかりづらいというのであれば、その旨書き添えてください。
引用返信 編集キー/
■75812 / inTopicNo.5)  Re[4]: クラスの依存関係について VB.NET
□投稿者/ kouei3 (6回)-(2015/05/04(Mon) 22:11:06)
kouei3 さんの Web サイト
No75804 (Azulean さん) に返信
> ■No75803 (kouei3 さん) に返信
>>上記件で、もし実際のコード例があるサイト等ありましたら教えて下さい。
>>インターフェイスの持ち回りが少し判り辛かったです。
>
> その法則の名前で検索してみましたか?
> 独自の用語というわけではありませんから、いくつか Web サイトが見つかるはずです。
> それでもわかりづらいというのであれば、その旨書き添えてください。

すいません。
インターフェイスについては理解しております。
しかしながら、インターフェイスを疎結合に利用する手は検索したWEB上で
数多にありながら、データーベースを管理するクラス(ADO等をラップした)での
メリットがあまり見出せなかった為です。実際に開発環境ではない自分の所で
作成しましたが、インターフェイスの参照を持ち回りましたが、管理クラスで
既にある程度の改修を想定したコーディングをしていましたし、使用する側では
固定した操作を強制?操作ガイドラインの遵守を行っていた為メリットがあるのかと
思案してしまいました。

しかしながら、DIのメリットは十分に理解しました。
幾多のprojectに関わるPG,SEにはかなり優良な手法かと思います。
使う機会はあるやもしれませんが、端から端までDI手法で!とは思わぬ様研鑽いたします。

ありがとうございました。


引用返信 編集キー/
■75813 / inTopicNo.6)  Re[5]: クラスの依存関係について VB.NET
□投稿者/ Azulean (479回)-(2015/05/04(Mon) 22:28:27)
2015/05/04(Mon) 23:00:22 編集(投稿者)

No75812 (kouei3 さん) に返信
> しかしながら、インターフェイスを疎結合に利用する手は検索したWEB上で
> 数多にありながら、データーベースを管理するクラス(ADO等をラップした)での
> メリットがあまり見出せなかった為です。

データベースの構造を知らないといけないサブシステムであれば、その理解で否定しません。

しかし、本当にそうなのですか?
サブシステムがやりたいことは、データベースの構造・テーブルなどを熟知しないと実装できないことなんですか?
たとえば、ユーザーを追加したいとか、抽象的な言葉で表せる範囲にとどまらないのでしょうか?

仮に「ユーザーの追加がやりたいだけであり、データベースの具体的な操作は知らなくて良い」なら、その機能を提供するインターフェースをサブシステムが必要とする形にしてしまえば、サブシステムからデータベース管理クラスへの直接依存をなくせます。
直接依存しないことによって、ユーザーの追加時にデータベース操作でやらないといけないことが増えたとしても、サブシステム側のコードを触る必要がなくなるというメリットがあります。
(もちろん、パラメーターが増えるなど、サブシステム側も触らないといけない事情があるときは両方触ることになります)


> 実際に開発環境ではない自分の所で
> 作成しましたが、インターフェイスの参照を持ち回りましたが、管理クラスで
> 既にある程度の改修を想定したコーディングをしていましたし、使用する側では
> 固定した操作を強制?操作ガイドラインの遵守を行っていた為メリットがあるのかと
> 思案してしまいました。

どの程度やりたいか、そのコードを今後どの程度活かしたいか、今かけられるコストは見合うかなどによって決まってくるので、当人が判断するほかなく、kouei3 さんがメリットないと思ったのであれば、致し方ありません。

考え方を変えたやり方になるので、どうしても最初にリファクタリングが入ってしまいます。
それによって生じる設計・実装工数、メンバーの教育コスト、流れを変えたことによる検査工数が、将来の設計・実装・検査工数を減らすことにつながらないのであれば、やる価値はありません。
引用返信 編集キー/
■75833 / inTopicNo.7)  Re[1]: クラスの依存関係について VB.NET
□投稿者/ Jitta (157回)-(2015/05/07(Thu) 19:34:33)
No75750 (kouei3 さん) に返信
> そうすると、データーベース管理クラスへの依存がかなり強まり

何が、どういう状態である事を、依存が強いと考えていらっしゃるのでしょう?
書かれていることからは、データベース管理クラスを各サブシステムが知っている状態を
強い依存と捉えていらっしゃるように思われます。
それを、どうしたいと考えていますか?
つまり、クラスをしっているのはダメ、インターフェイスならイイのですか?
それとも、すべてのサブシステムから要望を上げ、要望を汲み取る様な実装にしたいのでしょうか?
引用返信 編集キー/
■75836 / inTopicNo.8)  Re[2]: クラスの依存関係について VB.NET
□投稿者/ kouei3 (7回)-(2015/05/07(Thu) 22:27:35)
No75833 (Jitta さん) に返信
> ■No75750 (kouei3 さん) に返信
>>そうすると、データーベース管理クラスへの依存がかなり強まり
>
> 何が、どういう状態である事を、依存が強いと考えていらっしゃるのでしょう?
> 書かれていることからは、データベース管理クラスを各サブシステムが知っている状態を
> 強い依存と捉えていらっしゃるように思われます。
> それを、どうしたいと考えていますか?
> つまり、クラスをしっているのはダメ、インターフェイスならイイのですか?
> それとも、すべてのサブシステムから要望を上げ、要望を汲み取る様な実装にしたいのでしょうか?

ご両名へ

ありがとうございます。
実装方法を知る事ではなく、何か活気的な管理手法があるのか知りたく質問させて頂きました。
AzuleanさんからDIに関して教えて頂きましたのでひとまずそれを、可否は別として
実績積みたく思っています。

Jittaさん

レス読み返して、明確な管理手法等で質問事項が出ればまたご指導下さい。


解決済みとさせてください。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -