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
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Recently uploaded
(9)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
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