オブジェクト指向、DIとService Locatorの違いを教えて4

1仕様書無しさん2018/07/07(土) 10:47:57.49
■ オブジェクト指向・デザインパターン(有用)
 
 わかり易い例
 class Dog extends Animal
 class Cat extends Animal

■ DI(ゴミ)

 DIとは?・・・オブジェクト指向の依存関係を"ひとまとめに"定義する部分と、それを利用するために
        オブジェクトを直接newするのではなく、DIコンテナにnewしてもらうパターン

 http://kakutani.com/trans/fowler/injection.html

 > Dependency Injection の形式
 > Dependency Injection の基本的な考え方は、独立したオブジェクトを
 > Assembler(組み立て係)として用意し、 MovieFinder インタフェースの実装を
 > MovieLister クラスのフィールドへ適切に設定させるというものだ。
 > 依存関係は図2のようになる。


前スレ

オブジェクト指向とは 分かりやすく教えてくれ
https://medaka.5ch.net/test/read.cgi/prog/1521869966/

オブジェクト指向を分かりやすく例えて教えてくれ 2
https://medaka.5ch.net/test/read.cgi/prog/1525660302/

オブジェクト指向とDIを分かりやすく例えて教えてくれ 3
https://medaka.5ch.net/test/read.cgi/prog/1526733859/

279仕様書無しさん2018/07/12(木) 21:08:13.57
人類を滅ぼしたいね

280仕様書無しさん2018/07/13(金) 00:17:32.78
>>279
どうやる?

281仕様書無しさん2018/07/13(金) 09:17:22.69
おまえがたひれば相対的に世界が滅亡したようなものだぞ。

282仕様書無しさん2018/07/13(金) 22:02:01.14
>>280
俺から反物質が生成されるまで生きてみる

283仕様書無しさん2018/07/14(土) 11:09:10.34
JavaScriptのDIコンテナはどれですか?

284仕様書無しさん2018/07/14(土) 12:30:26.98
>>283
こんなのとかどうですか?
https://qiita.com/Quramy/items/e65ee58cf1fba589c81b

285仕様書無しさん2018/07/17(火) 00:02:57.12
終わりですか?

286仕様書無しさん2018/07/17(火) 06:05:16.35
>>285
はい、もう出し尽くしました

287仕様書無しさん2018/07/17(火) 06:11:34.16
最後の話題がこれ
DIとService Locatorの区別もつ無いやつが
DIマンセーしてましたっと

274 返信:仕様書無しさん[sage] 投稿日:2018/07/12(木) 20:26:31.22
>>271
Service Locatorにも組み立て係いるんだけど?

275 自分:仕様書無しさん[sage] 投稿日:2018/07/12(木) 20:49:03.06
その組立係を何処から参照しているかの違いですね

288仕様書無しさん2018/07/17(火) 06:17:54.62
Service Locatorで検索したら
Service Locator パターンについて
https://qiita.com/tassi-yuzukko/items/a81a7b9aaa42198df689
という記事がトップに見つかり、そこから超参考になる記事として以下が紹介されていた

Service LocatorとDependency InjectionパターンとDI Container
http://www.nuits.jp/entry/servicelocator-vs-dependencyinjection

さすがちゃんとわかっている

> 利用箇所の結合度をさげる
> まずはServiceLocatorもDIも関係ない領域です。
> GeolocationServiceからIGeolocationServiceインターフェースを抽出して利用箇所の結合度を下げます。

インターフェースを使って結合度を下げるのはServiceLocatorでもDIでもないと
ちゃーんとわかっている

Service LocatorもDIも、依存関係を解決する方法で
そのやり方が違うものである

289仕様書無しさん2018/07/17(火) 06:48:57.74
インターフェースで結合度を下げる->SLもDIも関係ない

実装インスタンスをクラスの外部で生成して渡す-> DI
注意: つまりSLはDIではない

DIのための生成手順を管理->ファクトリー

ファクトリーの実装パターンの1つ->DIContainer

290仕様書無しさん2018/07/17(火) 10:25:22.27
これも忘れずに

GoFのデザインパターンにあるのはFactory MethodとAbstract Factoryであって
ファクトリーもコンテナもないので、そう聞かれても正確な答えにはならない

ファクトリー = オブジェクトを生成するもの
コンテナ = 何かの入れ物
っていうアバウトな定義でいいのであれば、その通りだが。

更に言うなら「ファクトリー+コンテナ」には、インターフェースの実装を
生成するオブジェクトのクラスフィールドに設定させるという基本的な考えを実現する機能が
抜けてるので「ファクトリー+コンテナ+依存関係の解決」がDIコンテナと言える。
これに実際のDIコンテナはAOPの機能がついてたりするんだがこっちはおまけだな

291仕様書無しさん2018/07/17(火) 10:42:01.75
パターンをそんなに厳密に使ってる奴居るんだw

292仕様書無しさん2018/07/17(火) 14:22:13.35
デザインパターンは、プログラマの間で正確に意味を伝わるようにした
共通の用語なんだから当然。

それに対してファクトリーはデザインパターンではなく正確な用語じゃない
だから意味が正確に伝わらない。

それを言っておかないと、ファクトリーとDI が同一のものとか言い出しかねないからな。
ファクトリーにオブジェクトのコンテナと依存関係を解決したものがDI

通常ファクトリーといったらオブジェクトの生成ぐらいしか意味を持たない
(つまりコンテナ機能はないので毎回作成だし、依存関係の解決もしない)

293仕様書無しさん2018/07/17(火) 14:24:12.12
デザインパターンが実装まで定義してるなんて初耳だな。

294仕様書無しさん2018/07/17(火) 14:31:49.23
実装を定義してるなんて書いてないが?
さっきから言葉の定義の話しかしてないよね?
ファクトリーはこうで、DIはこうって

295仕様書無しさん2018/07/17(火) 20:23:57.65
だって、DIって、実装レベルの話だろ?

296仕様書無しさん2018/07/17(火) 20:47:34.95
設計手法かな

297仕様書無しさん2018/07/17(火) 21:33:00.27
>>287
DIアンチじゃね?

298仕様書無しさん2018/07/17(火) 21:46:46.14
ドリルインポ

299仕様書無しさん2018/07/17(火) 21:59:55.68
設計だよなぁ。DIの実装なんて各フレームワークで全然違うし

300仕様書無しさん2018/07/17(火) 22:01:41.16
DI=ドリルインポ

301仕様書無しさん2018/07/17(火) 22:06:47.83
大好きインぽ

302仕様書無しさん2018/07/17(火) 22:11:16.15
でも明らかに粒度が違うよなぁ
デザインパターンが基本設計なら、DIは詳細設計だろ?
なんで同じステージで語るの?

303仕様書無しさん2018/07/18(水) 00:51:59.32
コンポーネントの切り分けと依存関係は基本設計やろ

304仕様書無しさん2018/07/18(水) 03:30:15.55
DI厨はこういう理屈であることがわかったなw

席は一つしかありません。
基本設計の椅子にデザインパターンが座りました
空きは詳細設計のみです。
だからDIは詳細設計になります。
詳細設計というのはプログラミングのことです。
プログラミングというのは実装です。
だからDIは実装になります
DIが何をやるかには興味がありません。
詳細設計しか椅子がないのだからDIは実装です

305仕様書無しさん2018/07/18(水) 08:36:06.34
UMLで言うところの、黒いひし形か白いひし形かの違いを
延々と言い合うスレって事でいい?

306仕様書無しさん2018/07/18(水) 08:48:55.14
キチガイはスルー

307仕様書無しさん2018/07/18(水) 10:19:28.61
>>305
違うな。ひし形の色だけじゃない。
すべての形、その数、依存関係、まあ要するに
設計なんだが、それを言い合うスレだ

308仕様書無しさん2018/07/18(水) 10:20:02.92
デザインパターンが基本設計なら、DIも基本設計だろ?
同じステージの話なんだから

309仕様書無しさん2018/07/18(水) 10:22:29.33
いやいや、どう見てもDIは実装の話だろ?

310仕様書無しさん2018/07/18(水) 10:35:41.07
どうみてって何を見たの?
見た実装とやらを言ってみて

311仕様書無しさん2018/07/18(水) 10:37:34.47
だって実装の話しかして無いじゃん。

312仕様書無しさん2018/07/18(水) 10:38:36.20
だから見た実装とやらを言ってみて

ま、答えずに逃げてる所みれば
どういうことか、わかりますけどねw

313仕様書無しさん2018/07/18(水) 10:39:15.30
お前が見た「実装」とやらを持って
上司に「実装」しました!って言ってこいよwww

314仕様書無しさん2018/07/18(水) 10:40:41.89
>>312
は?
このスレのどこを見ても実装の話しかして無いだろw

315仕様書無しさん2018/07/18(水) 10:40:57.66
ほらまた逃げたw

316仕様書無しさん2018/07/18(水) 12:10:28.59
よこからスマンけどDIってなーに?

317仕様書無しさん2018/07/18(水) 12:23:53.14
>>1に書いてあるだろ

■ DI(ゴミ)

 DIとは?・・・オブジェクト指向の依存関係を"ひとまとめに"定義する部分と、それを利用するために
        オブジェクトを直接newするのではなく、DIコンテナにnewしてもらうパターン

 http://kakutani.com/trans/fowler/injection.html

 > Dependency Injection の形式
 > Dependency Injection の基本的な考え方は、独立したオブジェクトを
 > Assembler(組み立て係)として用意し、 MovieFinder インタフェースの実装を
 > MovieLister クラスのフィールドへ適切に設定させるというものだ。
 > 依存関係は図2のようになる。

318仕様書無しさん2018/07/18(水) 17:38:16.22
>>316
ドリルインポ

319仕様書無しさん2018/07/18(水) 21:57:47.93
キチガイはスルー

320仕様書無しさん2018/07/21(土) 21:55:01.84
1つ言えるのはオブジェクト指向のなんかよりも
データ構造とアルゴリズムの方がよっぽど重要だということ。
昔はオブジェクト指向の勉強を頑張っていたけどそのときは
全然プログラミングがうまくならなかった。
現代の世の中はガチガチに設計されたライブラリを使って
コードを書くだけだから生半可なオブジェクト指向の知識なんて
ゴミ同然だよ。80年代90年代に考えられた思想とか、もうゴミに
なってしまった思想が多くて有害だよ。
結局現場でやることは「メソッドの使い方を求めてQiitaやStack OverFlowを
漁って成功するコードを見つけるまで疲れ果てる」ことに変わりはない。
せっかく勉強した内容が時代遅れで「裏切られる」ことのほうが多い。

321仕様書無しさん2018/07/21(土) 21:55:37.69
一方、データ構造とアルゴリズムをガッツリと勉強してから
様々なデータ構造の使い方、問題の解決がうまくなった。
ブロックチェーンのアルゴリズムの理解や
データ分析の数学的演算がコーディング
できるようになってプログラミングが格段に楽しくなった。
スマートにオブジェクト指向で設計する力なんかより
「ゴリゴリとアルゴリズムを書く力」の方がよっぽど重要。
「再利用性」?「変更の影響」だって?そんなものゴミだね。
それは自分以外の人間のメリットのための技術であって、
自分へ還元されるためのメリットではない。
再利用性は自分の書いたコードなら信頼できるしコピペして使えばいい。
自分の書いたコードのコピペは全然ありだと思う。
適したメソッドが見つからなかったらQiitaを漁ったりせずに
自分でゼロから実装したほうが速い。
その場で手っ取り早くコードを生成しているから、
どんな既存コードにも頼っていないから俺の実装したコードは
依存性は低い。

322仕様書無しさん2018/07/21(土) 22:01:01.01
天才が作ったライブラリないとお前何にもできないじゃん

323仕様書無しさん2018/07/21(土) 22:23:31.55
>>320-321
DIの話から逃げるなら、
こんなところにそのクソ文章をコピペしてないで
こっちに逃げ帰りな

データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1466315249/814

早速お前ボロクソに言われてるけどなw

324仕様書無しさん2018/08/22(水) 21:32:26.82
そんなにアルゴリズム好きなら
量子アルゴリズムでも探せば喜ばれるぞ

325仕様書無しさん2018/09/18(火) 12:10:45.11
diは無知なんだが、これは品質確保のための手法ってことで良いの?
未熟な奴に任せて設計させるとカオスな構造を生み出すから
分かってる奴があらかじめ枠組み組んでここでやれって言う奴?

326仕様書無しさん2018/09/18(火) 12:18:07.62
前提条件として、どんな開発場面を想定してんだろ?
このスレ見てても分かる通り、前提条件の共有も分からんのが多いだろ?
そのこと自体が、何かしらの標準や型が必要であることを示唆してるよね

327仕様書無しさん2018/10/15(月) 21:19:07.09
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。

328仕様書無しさん2018/10/20(土) 20:45:19.62
このヤフーブロはこのページからおもろいし、ためになるわ。
https://blogs.yahoo.co.jp/kamyu_2010/35442561.html

329仕様書無しさん2018/11/04(日) 11:30:33.87
ブリッジパターンの応用手順のブログみたい。パッケージを開発する時を前提にしているね。
https://blogs.yahoo.co.jp/kamyu_2010/35480077.html

新着レスの表示
レスを投稿する