◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

オブジェクト指向とDIを分かりやすく例えて教えてくれ 3 ->画像>4枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/prog/1526733859/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

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

■ DI(ゴミ)

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

 https://web.archive.org/web/20170707082300/http://kakutani.com/trans/fowler/injection.html

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


前スレ

オブジェクト指向とは 分かりやすく教えてくれ
http://2chb.net/r/prog/1521869966/

オブジェクト指向を分かりやすく例えて教えてくれ 2
http://2chb.net/r/prog/1525660302/

2仕様書無しさん2018/05/19(土) 21:51:41.92
■ DIの例
Dog baby = new Dog(mom.cunt, uncle.dick);

3仕様書無しさん2018/05/19(土) 21:59:11.23
>>2
間違い。DIではnewを使わない(DIコンテナが行う)

4仕様書無しさん2018/05/19(土) 22:00:18.05
■ DIの例

それから、PicoContainerはそれぞれのインタフェースがどの実装クラスと結び付けられるのかを通知してもらう必要がある。 MovieFinder にどういうファイル名がインジェクトされるのかについても同様だ。

private MutablePicoContainer configureContainer() {
MutablePicoContainer pico = new DefaultPicoContainer();
Parameter[] finderParams = {new ConstantParameter("movies1.txt")};
pico.registerComponentImplementation(MovieFinder.class, ColonMovieFinder.class, finderParams);
pico.registerComponentImplementation(MovieLister.class);
return pico;
}
この設定コードは、本来ならば別の設定クラスで記述されるべきものだ。

5仕様書無しさん2018/05/19(土) 22:00:41.52
■ コンストラクタインジェクションの例

PicoContainer を利用するためには、以下のようなコードを書く。

public void testWithPico() {
MutablePicoContainer pico = configureContainer();
MovieLister lister = (MovieLister) pico.getComponentInstance(MovieLister.class);
Movie[] movies = lister.moviesDirectedBy("Sergio Leone");
assertEquals("Once Upon a Time in the West", movies[0].getTitle());
}
なお、このサンプルではコンストラクタ・インジェクションを利用しているが、 PicoContainer では
セッター・インジェクションもサポートしている (開発者たちはコンストラクタ・インジェクションのほうが好みのようだけれど)。

6仕様書無しさん2018/05/19(土) 22:02:30.37
■ Spring でのセッター・インジェクションの例
Spring Framework は エンタープライズ Java 開発向けの守備範囲の広いフレームワークだ。
トランザクション、永続化フレームワーク、Web アプリケーション開発や JDBC に関する抽象レイヤがある。

MovieLister がインジェクションに対応できるように、 サービス設定用の setter メソッドを定義しなければならない。
(省略)

同様に、MovieFinder には文字列の setter を定義する。
(省略)

3番目のステップとして、ファイルに設定を記述する。Spring での設定は XML ファイルでもコードでも可能だが、 XMLで行うことが望ましいとされている。

<beans>
<bean id="MovieLister" class="spring.MovieLister">
<property name="finder">
<ref local="MovieFinder"/>
</property>
</bean>
<bean id="MovieFinder" class="spring.ColonMovieFinder">
<property name="filename">
<value>movies1.txt</value>
</property>
</bean>
</beans>

テストはこんな感じだ。
public void testWithSpring() throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext("spring.xml");
MovieLister lister = (MovieLister) ctx.getBean("MovieLister");
Movie[] movies = lister.moviesDirectedBy("Sergio Leone");
assertEquals("Once Upon a Time in the West", movies[0].getTitle());
}

7仕様書無しさん2018/05/19(土) 22:03:15.98
結局手抜きしてフィールドインジェクションしてるわ

8仕様書無しさん2018/05/20(日) 03:13:45.22
XMLもsetterもキモイから嫌い
コードで配線の設定書いてコンストラクタでインジェクションしてる

9仕様書無しさん2018/05/20(日) 06:56:39.07
定義と実装ぐらい区別しようよ

10仕様書無しさん2018/05/20(日) 07:18:45.20
>>9
クラスやインターフェースの定義の話じゃないぞ?

DIの依存関係の定義っていうのはコードもしくは設定ファイル
なんだから、お前が勘違いした実装というのは
「コードで書いたDIの依存関係の」定義だろ

11仕様書無しさん2018/05/20(日) 09:10:00.65
>>6
ついにここまで来たか
学習能力高いな
アノテーション定義もやってみよう

12仕様書無しさん2018/05/20(日) 19:34:27.18
さて、前スレのなぜDIを使うとライフサイクルの事まで
考えなければいけなくなるのか?の答

惜しい所まで来てるんだけど、あと一歩足りない
DIを悪く言えないから、気づいてしまったけど
口に出して言えないのかもしれないねw

DIを使うとライフサイクルの事まで考えなければいけなくなるのは
DIがなにをやってくれるものなのかに気づく必要がある

再掲すると

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

 https://web.archive.org/web/20170707082300/http://kakutani.com/trans/fowler/injection.html

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

一言で言うならば、newを代わりにやってくれるものと考えればいい
それだけ。そう、それだけなんだよ。

だからどんな用途にも使える。これは一見優れているように見えるかもしれないが、
汎用的な解決方法しか提供できないため、逆に特定の問題をシンプルに解決することができない

フレームワークは一般的に特定の問題(例えばウェブアプリ)を解決するために作られたものなので
ライフサイクルの管理もフレームワークで管理して、特定の問題の解決に必要な部分のみを
プログラマが記述すれば良くなる。

13仕様書無しさん2018/05/20(日) 19:36:15.35
もちろんDIを使っていてもフレームワークが
DIを内部に隠蔽することでライフサイクルの管理を
プログラマがしなくてすむようにできるだろうけど、
そうするとプログラマがDIを直接使うのが難しくなってしまう

14仕様書無しさん2018/05/20(日) 19:39:22.07
支離滅裂

15仕様書無しさん2018/05/20(日) 19:39:48.38
以上、staticおじさんでした

16仕様書無しさん2018/05/20(日) 19:40:12.11
反論がないところまで想定済みw

17仕様書無しさん2018/05/20(日) 19:45:28.28
キチガイに触るな

18仕様書無しさん2018/05/20(日) 19:58:39.31
本当に文句だけ言って去っていくのなw

19仕様書無しさん2018/05/20(日) 20:12:33.22
DI(フレームワーク)がライフサイクル管理してくれるんだろ?
プログラマは意識しなくていいやん

20仕様書無しさん2018/05/20(日) 20:13:28.86
まだやってたのか!?
おまえ等がDI大好きなのはわかった…

21仕様書無しさん2018/05/20(日) 20:13:56.23
DIはフレームワークじゃないよ。パターン。
DIパターンを使ったフレームワークと勘違いしてね?

22仕様書無しさん2018/05/20(日) 20:50:05.38
>>12
だいぶ惜しくなってきたんじゃない?

23仕様書無しさん2018/05/21(月) 01:21:20.44
>>22
自分が?まあ反論してないってことはそういうことなんだろうけど

24仕様書無しさん2018/05/21(月) 01:32:01.57
むしろ今までライフサイクル意識せずピュアな実装してたとか恐怖でしかない

25仕様書無しさん2018/05/21(月) 01:45:49.89
そういうのはフレームワークが隠蔽すべきものだからね


lud20180521200354
このスレへの固定リンク: http://5chb.net/r/prog/1526733859/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「オブジェクト指向とDIを分かりやすく例えて教えてくれ 3 ->画像>4枚 」を見た人も見ています:
オブジェクト指向を分かりやすく例えて教えてくれ 2
オブジェクト指向とは 分かりやすく教えてくれ
【日韓】 過去の問題を未来指向的に解決する方法〜日本は過去の誤りを教科書に記載し、歴史の一部として子供に教えよ★2[05/24] [無断転載禁止]
オブジェクト指向は無駄なもの。俺が理解出来ないからね
ActionScriptのオブジェクト指向プログラム関係のスレ
こんな例え教えて [無断転載禁止]
オブジェクト指向はオワコン
オブジェクト指向wCOBOLと同じ
オブジェクト指向が無かった頃って
大阪市廃止の何が問題かわからないんけゲーム例えて教えて
アベンジャーズ初めて見るんだがAKBに例えて教えてくれよ!
面接官「チェスで例えるとあなたはどの駒ですか?理由も教えてください」
例えばの話だけどもし会社でうんこ漏らしたらどうしたらいいの?なるべく早く教えてくれ
小川麗奈「2017年は知識を得てみんなに色んなことを教えられる存在になりたい 例えばイギリスの国歌とか・・・」
今回の山口案件が俺たちに教えてくれた事。JKからしてみれば例え山口レベルでも40代のおっさんは無理。
良いこと教えてあげよう 「(リゾート地)+(一昔前の年代)」でYouTube検索してみ 例えば「Tenerife 1990」とか
オブジェクト指向が嫌われてる理由 (43)
オブジェクト指向ができないと言われる (315)
Javaのオブジェクト指向のサンプルほしい (19)
【ラジオ】radikoプレミアに入ろうと思う。日本全国面白い番組教えて🤗
石栗奏美「DEF.DIVAは今のハロプロで例えると金澤朋子さん、宮本佳林さん、譜久村聖さん、竹内朱莉さんの4人ですね」
猫が教えてくれたこと Kedi
auが嫌われる理由をKDDIに教えるスレ
面白いWikipediaのページ教えて
nvidia←どうしても読み方がわからん。教えてくれ
お前らが最高に感服したWikipediaの記事を教えろ
official髭男dism、king gnuの次に流行るアーティスト教えたろか??
最近いろいろDIYしてて楽しい、次は原爆を作ってみたいんだが、色々教えてくれないか?
【悲報】Bandizip、有料化のせいで改悪が止まらない。代わりの圧縮ツール教えてくれ
ANNとJUNKが好きな関東人なんだけどradiko premium入ったからオススメの番組教えて
【教えて!公明党】公明党と創価学会の関係は?政教一致じゃないの? [Toy Soldiers★]
【悲報】Wikipedia、一線を超えるレベルで寄付の広告がウザ過ぎる。 アドブロックする方法教えてくれ
Wikipediaの“日本住血吸虫”の記事を見て感動した。他にも読み応えがある記事あったら教えて
「プリンセスコネクト!Re:Dive」って面白い?ケンモウ君こういうの好きそうだから教えてくれ
PCゲームやるから覚えとくと便利な英語教えてほしい。とりあえず「WTF」と「Are you kidding me?」は覚えた
職場のみんなでカラオケ行くことになったんだけどビヨンセのAll single ladiesしか持ち歌がない。なんか無難な曲教えろ
【緊急】曲が思い出せない!たぶんクラシック音楽!ケンモメ教えてくれ、MIDIで再現したから [無断転載禁止]©2ch.net
日本て戦争の悲惨さとか戦争はいけないとか教えて、なぜ日本が戦争することになったのか教えない。教えると戦争した方がマシかもとバレる [Toy Soldiers★]
富士通の残業だとかいろいろ教えて>< (883)
高校1年生がフリプロで稼ぐ方法を教えて下さい (35)
未経からバックドアエンジニアになった人教えて… (37)
pythonをマスターしたいから教えて? [無断転載禁止]&#169;2ch.net (36)
今のSI業界をプロ野球に例えると
教えろ
教え上手
教えろ
教えて
教えて
ガールズ&パンツァー・各校の戦力をガンダムに例えた図が分かりやすいと話題に! 黒森峰はどうやったらこれで負けるんだの声も…
C言語 誰か教えて
楽な死にかた教えて
pcについて教えてくれ
喉の脱力について教えてくれ
今作ったら儲かるモノ教えて
ライン工について教えてくれ
プログラミングを教えてくれ
欅坂の人間模様について教えてくれ
高2なんやが日本史の勉強について教えてくれ
gasで出たエラーについて教えて!!!!
CMSどうにもならない誰か教えてください。
誰かこのめっちゃかわいい子について教えてくれ
何番煎じだろうが未経験者が稼げる言語教えて
これのどこがおかしいか教えて欲しいです

人気検索: 鈴木沙彩ファンクラブ スクール水着 2017 チア 50 Is アウロリ 洋ロリ画像 js TV 男の裸 女子小学生和小学生 パンチラ 11 Young nude girl? ・ェ・ウ縲?螂ウ蟄仙ー丞ュヲ逕溘??鬮伜ュヲ蟷エ蜈ィ陬ク
15:19:23 up 110 days, 16:18, 0 users, load average: 51.03, 59.39, 58.96

in 0.050066947937012 sec @0.050066947937012@0b7 on 080604