Submit Search
Upload
Builderによるcompositeの隠蔽
•
Download as PPTX, PDF
•
0 likes
•
425 views
Syoko Matsumura
Follow
パターン指向リファクタリング入門
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Recommended
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Kazumi Hirose
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
Kazumi Hirose
Config mapについて
Config mapについて
Arata Honda
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
Katz Ueno
Excite beer bash06
Excite beer bash06
Arata Honda
環境構築資料
環境構築資料
武彦 大山
開発合宿 Hello world
開発合宿 Hello world
Yohei Sugasawa
120512 metro styleapp_javascript
120512 metro styleapp_javascript
Takayoshi Tanaka
Recommended
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Kazumi Hirose
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
Kazumi Hirose
Config mapについて
Config mapについて
Arata Honda
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
Katz Ueno
Excite beer bash06
Excite beer bash06
Arata Honda
環境構築資料
環境構築資料
武彦 大山
開発合宿 Hello world
開発合宿 Hello world
Yohei Sugasawa
120512 metro styleapp_javascript
120512 metro styleapp_javascript
Takayoshi Tanaka
カスタムLSIが道具になるために
カスタムLSIが道具になるために
Junichi Akita
Biblnk
Biblnk
繁史 河久保
HMG Awards
HMG Awards
Business Communications
Tet 2014 with 10D7-12D7
Tet 2014 with 10D7-12D7
Viet Vo
Diseño electrico
Diseño electrico
Sebastian0504
QGISやってみた 人口動態データのプロット
QGISやってみた 人口動態データのプロット
Katsuhiro Morishita
BANKING API AND API ECOSYSTEM
BANKING API AND API ECOSYSTEM
API Meetup
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
Insight Technology, Inc.
The Path to Wellness through Big Data
The Path to Wellness through Big Data
Hortonworks
2012151039 임종원 기말 과제 인터랙션 디자인
2012151039 임종원 기말 과제 인터랙션 디자인
Jong Won Lim
Teori Kognitif Lev vygotsky
Teori Kognitif Lev vygotsky
Izzat Najmi
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
Yahoo!デベロッパーネットワーク
Apigee+OASでらくらくAPI開発(予定)
Apigee+OASでらくらくAPI開発(予定)
Kazuchika Sekiya
02. 한국의 자동차산업 (이장명 교수)
02. 한국의 자동차산업 (이장명 교수)
University of Ulsan
Kafka通常オペレーションで遭遇する問題集 #kafkajp
Kafka通常オペレーションで遭遇する問題集 #kafkajp
Yahoo!デベロッパーネットワーク
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Yahoo!デベロッパーネットワーク
Apache Ambari - What's New in 2.4
Apache Ambari - What's New in 2.4
Hortonworks
Dental composite /certified fixed orthodontic courses by Indian dental academy
Dental composite /certified fixed orthodontic courses by Indian dental academy
Indian dental academy
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
Indian dental academy
online fixed orthodontics course
online fixed orthodontics course
Indian dental academy
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
Syoko Matsumura
女性エンジニアコミュニティの作り方 #fuller_lt
女性エンジニアコミュニティの作り方 #fuller_lt
Syoko Matsumura
More Related Content
Viewers also liked
カスタムLSIが道具になるために
カスタムLSIが道具になるために
Junichi Akita
Biblnk
Biblnk
繁史 河久保
HMG Awards
HMG Awards
Business Communications
Tet 2014 with 10D7-12D7
Tet 2014 with 10D7-12D7
Viet Vo
Diseño electrico
Diseño electrico
Sebastian0504
QGISやってみた 人口動態データのプロット
QGISやってみた 人口動態データのプロット
Katsuhiro Morishita
BANKING API AND API ECOSYSTEM
BANKING API AND API ECOSYSTEM
API Meetup
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
Insight Technology, Inc.
The Path to Wellness through Big Data
The Path to Wellness through Big Data
Hortonworks
2012151039 임종원 기말 과제 인터랙션 디자인
2012151039 임종원 기말 과제 인터랙션 디자인
Jong Won Lim
Teori Kognitif Lev vygotsky
Teori Kognitif Lev vygotsky
Izzat Najmi
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
Yahoo!デベロッパーネットワーク
Apigee+OASでらくらくAPI開発(予定)
Apigee+OASでらくらくAPI開発(予定)
Kazuchika Sekiya
02. 한국의 자동차산업 (이장명 교수)
02. 한국의 자동차산업 (이장명 교수)
University of Ulsan
Kafka通常オペレーションで遭遇する問題集 #kafkajp
Kafka通常オペレーションで遭遇する問題集 #kafkajp
Yahoo!デベロッパーネットワーク
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Yahoo!デベロッパーネットワーク
Apache Ambari - What's New in 2.4
Apache Ambari - What's New in 2.4
Hortonworks
Dental composite /certified fixed orthodontic courses by Indian dental academy
Dental composite /certified fixed orthodontic courses by Indian dental academy
Indian dental academy
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
Indian dental academy
online fixed orthodontics course
online fixed orthodontics course
Indian dental academy
Viewers also liked
(20)
カスタムLSIが道具になるために
カスタムLSIが道具になるために
Biblnk
Biblnk
HMG Awards
HMG Awards
Tet 2014 with 10D7-12D7
Tet 2014 with 10D7-12D7
Diseño electrico
Diseño electrico
QGISやってみた 人口動態データのプロット
QGISやってみた 人口動態データのプロット
BANKING API AND API ECOSYSTEM
BANKING API AND API ECOSYSTEM
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
[db tech showcase Tokyo 2016] E34: Oracle SE - RAC, HA and Standby are Still ...
The Path to Wellness through Big Data
The Path to Wellness through Big Data
2012151039 임종원 기말 과제 인터랙션 디자인
2012151039 임종원 기말 과제 인터랙션 디자인
Teori Kognitif Lev vygotsky
Teori Kognitif Lev vygotsky
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
WSDM2016報告会−論文紹介(Beyond Ranking:Optimizing Whole-Page Presentation)#yjwsdm
Apigee+OASでらくらくAPI開発(予定)
Apigee+OASでらくらくAPI開発(予定)
02. 한국의 자동차산업 (이장명 교수)
02. 한국의 자동차산업 (이장명 교수)
Kafka通常オペレーションで遭遇する問題集 #kafkajp
Kafka通常オペレーションで遭遇する問題集 #kafkajp
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
検索クエリの時間差を可視化することでわかる人の行動パターン #yjdsnight
Apache Ambari - What's New in 2.4
Apache Ambari - What's New in 2.4
Dental composite /certified fixed orthodontic courses by Indian dental academy
Dental composite /certified fixed orthodontic courses by Indian dental academy
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
Dentin bonding agents /certified fixed orthodontic courses by Indian dental ...
online fixed orthodontics course
online fixed orthodontics course
More from Syoko Matsumura
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
Syoko Matsumura
女性エンジニアコミュニティの作り方 #fuller_lt
女性エンジニアコミュニティの作り方 #fuller_lt
Syoko Matsumura
社会に出る前に知っておきたかったnのこと
社会に出る前に知っておきたかったnのこと
Syoko Matsumura
女子力高まるJs
女子力高まるJs
Syoko Matsumura
1日を36時間にするたったひとつの方法
1日を36時間にするたったひとつの方法
Syoko Matsumura
JSつまみぐい
JSつまみぐい
Syoko Matsumura
Let’s angular js!!
Let’s angular js!!
Syoko Matsumura
エンプラYouは何してる?
エンプラYouは何してる?
Syoko Matsumura
エンプラYouは何してる?
エンプラYouは何してる?
Syoko Matsumura
More from Syoko Matsumura
(9)
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
人見知りでもイベントを楽しめる!!〜リアルとネットをつなぐ〜 #mlkcca
女性エンジニアコミュニティの作り方 #fuller_lt
女性エンジニアコミュニティの作り方 #fuller_lt
社会に出る前に知っておきたかったnのこと
社会に出る前に知っておきたかったnのこと
女子力高まるJs
女子力高まるJs
1日を36時間にするたったひとつの方法
1日を36時間にするたったひとつの方法
JSつまみぐい
JSつまみぐい
Let’s angular js!!
Let’s angular js!!
エンプラYouは何してる?
エンプラYouは何してる?
エンプラYouは何してる?
エンプラYouは何してる?
Recently uploaded
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(10)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Builderによるcompositeの隠蔽
1.
Builderによる Compositeの隠蔽 パターン指向リファクタリング入門(PDF: P.130~)
2.
BuilderによるCompositeの隠蔽 (P.130) ▪ Compositeの構造処理が何度も出現したり、 複雑であったり、あるいはエラーを起こしやすいものになっている。 TagNode多すぎィ! 2
3.
BuilderによるCompositeの隠蔽 (P.130) ▪ 詳細部分をBuilderに任せることで、構築を単純化する。 TagBuilder1回呼び出すだけ TagNodeをTagBuilderで 隠蔽する
3
4.
動機 (P.131) 1. 複数オブジェクトを生成するクライアントコードを単純化するため ▪
オブジェクトの生成に関する難解で面倒な部分をBuilderが実装していれば,クラ イアントは,生成がどのように行われるかを知らなくても,Builderに生成を指示す ることができる。 ▪ 例:親ノードに子ノードを追加するときにクライアントで行う操作 4 新しいノードをインスタンス化 新しいノードを初期化 新しいノードを正しい 親ノードに適切に追加 操作不要 根のノードが分かれば 操作不要
5.
動機 (P.131) 2. クライアントコードとCompositeコードとを切り離すため ▪
前回の「Compositeによる暗黙的なツリー構造の置き換え」を行ったとき に発生する問題 ▪ クライアントコードとCompositeコードが緊密に結合していると, Compositeの実装を変更するのが困難になる。 5
6.
▪ 例:クライアントコードとDOMのインタフェース/クラスを切り離す 6 Clientと直接 関連をもつ DOMBuilderでワンクッション挟む →環境構築(更新)が容易になる (新しいVer.のDOMへの入れ替え等)
7.
Builderパターンの目的 (P.131) ▪ 複数オブジェクトについて、その作成過程を表現形式に依存しな いものにすることにより、同じ作成過程で異なる表現形式のオブ ジェクトを生成できるようにする。
ー GoF [DP、105 ページより引用] ▪ 作成過程を表現形式に依存しないものにする ▪ →子ノードが増えても、クライアントに子ノードのことを書かない ▪ 同じ作成過程で異なる表現形式 ▪ →Compositeを隠蔽しているだけなので作成過程は変わっていない ▪ →Builderで隠蔽しているので表現形式が異なる 7
8.
Builderの補足 (P.131) ▪ Builderが提供するサービス ▪
異なる表現形式のオブジェクトを生成できる ▪ 構築を単純化する ▪ クライアントコードと複合オブジェクトを切り離す ▪ 概要はわかりやすく詳細がわかりづらいBuilder ▪ Builderのインタフェースは明確に意図が伝わるものでなければならない ▪ が、構築を単純化するために詳細な部分は隠蔽しているため見えづらい ▪ 詳細を知るにはBuilderの実装/テストコード/ドキュメントを要チェック 8
9.
利点・欠点 (P.133) Good Point ▪
Compositeを構築するクライアントコードを単純化できる。 ▪ Compositeの生成にまつわる繰り返しやエラーを軽減できる。 ▪ クライアントとCompositeの間の結合度が低くなる ▪ カプセル化されたCompositeや複合オブジェクトを異なった形式で表現できる Bad Point ▪ インタフェースの意図が伝わりにくくなる可能性がある 9
10.
手順 (P.133-134) 基本の流れ。適宜カスタマイズしてね。 1. 新しいBuilderクラスを作る 2.
Builderが子ノードを構築できるようにする 3. ノードの属性や値をBuilderが設定できるようにする 4. 作成したBuilderをClientがどの程度簡単に使えるのか見直し、手直す。 5. 新しいBuilderをComposite構築コードをリファクタリングする。 10
11.
例 (P.134) 11 本読みながらで いいかな?
12.
新しく作成したBuilderの性能改善 ▪ (詳しい説明の必要性を感じなかった) ▪ Builderに対して性能改善を施した。 ▪
Compositeを隠蔽したように,性能改善ロジックもカプセル化したので,Builderのユーザか ら見ると何も変わっていないのに性能が良くなった。 12 StringBufferが原因なら Builderじゃなくても ユーザ影響少なそう。
13.
変化形:スキーマベースのBuilder ▪ XMLスキーマをTreeSchemaに変換するとかどうとか ▪ たぶんXMLにしか使えない。 13 難しいので みんなで読みましょう
14.
14
Download now