Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オブジェクト指向のこころ: 第22章 / DESIGN PATTERNS EXPLAINED:...
Search
hideki kinjyo
PRO
February 03, 2022
Programming
0
180
オブジェクト指向のこころ: 第22章 / DESIGN PATTERNS EXPLAINED: chapter-22
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
February 03, 2022
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
#phperbiglt のLT
o0h
PRO
0
50
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
180
symfony/mcp-bundleで、既存アプリケーションもお手軽にMCPサーバー化
o0h
PRO
1
60
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
5k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
620
Composerの依存解決 #phpstudy
o0h
PRO
0
150
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
2k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.8k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
23
5.4k
Other Decks in Programming
See All in Programming
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
140
Cap'n Webについて
yusukebe
0
150
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
150
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
340
Deno Tunnel を使ってみた話
kamekyame
0
230
ゆくKotlin くるRust
exoego
1
150
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
認証・認可の基本を学ぼう後編
kouyuume
0
250
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
390
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
140
開発に寄りそう自動テストの実現
goyoki
2
1.4k
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Between Models and Reality
mayunak
0
150
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
For a Future-Friendly Web
brad_frost
180
10k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
580
Exploring anti-patterns in Rails
aemeredith
2
200
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
27
It's Worth the Effort
3n
187
29k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
34
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Transcript
ୈ22ষ Object Poolύλʔϯ ՝ਤॻ: ΦϒδΣΫτࢦͷ͜͜Ζ: σβΠϯύλʔϯͱͱʹֶͿ
ᴷେ·͔ʹݴ͑ɺΦϒδΣΫτϓʔϧύλʔϯɺ͏ͷΛ ܾ·͚ͬͨͩɺݴ͍͑ΕϓʔϧΛɺ࡞Δํ๏Ͱ͢ɻ GoݴޠʹΑΔฒߦॲཧ P59-60
ͳΜͰͦΜͳࣄ͍ͨ͠ͷʁ • ΦϒδΣΫτͷੜίετ͕ߴ͘ɺ͋Μ·Γੜͨ͘͠Ͷʙͱ͍͏͕࣌͋ Δ(࡞Γஔ͖ˍ͍·Θ͍ͨ͠) • ͜ΕSingletonͱࣅͨಈػͰ͢Ͷ • ੜ͞ΕΔʹ্ݶΛઃ͚͍ͨͳʙͱ͍͏͕࣌͋Δ(ϦιʔεཧΛγϏΞ) • (ʮੜ࣌ʹϝϞϦΛXXX
KB֬อ͢ΔΑʯͬͯΦϒδΣΫτ͕ແݶʹ࡞ ΒΕͨΒࠔΔΜ͡Όɺͱ͔Ͱ) • ৽͘͠࡞Βͳ͍Ͱɺۭ͖͕ग़Δ·Ͱͬͯཉ͍͠ʂ • ओʹඇಉظॲཧΛѻ͏έʔεʹͯ༗༻
Ͳ͏Δͷʁ • PoolΫϥε(Manager)Λͭ͘Δ • Pool • ͑ΔΦϒδΣΫτ(Ϧιʔε)Λɺۭ͖ঢ়ଶ͕Θ͔Δঢ়ଶ ͰஷΊΔ • ཁٻ͞ΕͨΒۭ͍͍ͯΔΦϒδΣΫτΛฦ͢
• ͍ऴΘͬͨΒΦϒδΣΫτΛฦͯ͠Β͏ • ར༻ऀɺΦϒδΣΫτͷऔಘΛPoolܦ༝Ͱߦ͏Α͏ʹ͢Δ
Ϧιʔεͩ͘ ͍͞ʂ ͍͋Αʂ ͭऔΓग़͢ Α Ͳ͏ͧʙ ͍ऴΘͬ ͨΑʂ ͍͋Αʂ ฦ͖ͬͯͨ
Α
Ϧιʔεͩ͘ ͍͞ʂ ͳ͍ͷͩ Θʂʂ ͭऔΓग़͢ Α Ͳ͏ͧʙ ͬͯͶʂ ͬͯͶʂ ͬͯͶʂ
ͬͯͶʂ ͬͯͶʂ ͬͯͶʂ ,*5"ʂʂ ͬͯͶʂ ͍ऴΘͬ ͨΑʂ
Pool͕ͳ͍ͱͲ͏ͳΔͷʁ • ར༻ऀͷ͚ͩʮੜʯͷॲཧ͕Δʂ • ੜ1ͭ1ͭʹύϫʔ͕ཁΔ • ͦͷ͚ͩࣗଓઌͷϦιʔεΛফඅ͢Δ • ͍͡ΘΔͳ؍: ʮϦιʔεͷফඅঢ়گʯΛࢹͯ͠ɺΓ
ͳ͔ͬͨΒͲ͏͜͏͢ΔʙΛ͢ΕPool͠ͳ͍͍ͯ͘ʁ • ੜʹ͏ύϫʔมΘΒͳ͍ͷͰ͕Δ • GCΛ͍ͬͯΔͱɺʮෆඞཁʹͳͬͨ(ղ์͞Εͨ)ʯ࣌ ͰɺϦιʔε͕আ͞ΕΔ • ʮ͍ऴΘͬͯղ์͠ͳ͍ʯΑ͏ʹ͢Δ͕͍Δ ݸ্ݶͷ͋ΔϦιʔεΛ͍·Θ͠ɺۭ͖͕ͳ͚ΕͨͤΔྫ →
ຊͷʹΓ·͢
࡞ͬͯͶ˒ • ωοτϫʔΫΛ௨ͯ͡ΞϨίϨ͢ΔγεςϜ • (TCP/IPܦ༝ͰϝΠϯϑϨʔϜͱ௨৴͢Δ • ΫϥΠΞϯτ -> [ίίΛ࡞Δ] ->
ϝΠϯϑϨʔϜ • ϦΫΤετ͝ͱͷԠ͕࣌ؒ৳ͼͯɺಉ࣌ॲཧΛଟ͘ ͍ͨ͠ • : ϝΠϯϑϨʔϜͷଓΛԿݸ։͚ΔΜͩɾɾɾʁ
͜͏ͬͯ࡞Ζ͏˒ • ͱΓ͋͑ͣʮܨ͍ͰɺΓͱΓͯ͠ɺ͖ͬͯͨσʔλΛ ॲཧ͢ΔʯΈ͍ͨͳ෦Λ࡞ͬͪΌ͍͍ͨ • ΦϒδΣΫτ(ଓ)ͷ্ݶઈରʹઃ͚Δʂʂ • ʮԿݸ։͚Δ͔͔Βͳ͍ʯ͔ΒɺʮޙͰ؆୯ʹม͑ΒΕ ΔΑ͏ʹʯ͓ͯ͘͠ ➡ʮΘ͔Βͳ͍ॴΛޙճ͠ʹ͓͚ͯ͠Δ(அΛԆͤ͞Δઃ
ܭߦҝ)ʯΛ͓͚ͯ͠ɺ։ൃऀ҆৺҆શͬͯϫέʂ
ͦ͜ͰObject PoolͰ͢Α ଓΦϒδΣΫτ(Port)ͱɺ ͦΕΛཧ͢Δϓʔϧ(PortManager)Λ࡞ͨ͠ • PortManagerάϩʔόϧʹ1ݸ͚ͩଘࡏ͢Δ • Singletonͷར༻ • PortManagerɺPortͷੜɾཧΛ୲
• ੜɾฦ٫ɾ(ҟৗ࣌ͷ)ഁغͳͲ
PoolͷͱClientͷ • Clientͷؔ৺ʮ͑ΔPortΛΑͤ͜ʯͱ͍͏ • ʮੜ(factory)ʯΛPoolʹͤΔͱ͍͏͜ͱɺੜ͕ʮ ͑Δʯঢ়ଶʹ͋Δͱ͍͏͜ͱ·ͰPool͕ཧग़དྷΔͱ͍͏͜ͱ • ʮ࡞Δ͜ͱʯͰͳͯ͘ʮ४උ͠ɺఏڙ͢Δ͜ͱʯ͕ • ʮବʹͳͬͨPortೖΕସ͑Δʯͱ͔ɻ
• Clientʮ͑ΔͷΛཁٻ͠ଓ͚ͯɺࣗΒͷతΛୡ͢Δʯ ͚ͩͰΑ͍
ͱ։ൃ • ʮͷʯʮநʹΑΔઃܭʯʮΧϓηϧԽʯ͕࣮ݱ͞Ε Δ͜ͱͰɺʮ۩ମͷஅʯΛޙճ͠ʹͰ͖Δ • ௨৴࣌ΤϥʔͲ͏ѻ͓͏ɾɾʁͱ͔΄΅ؾʹͤͣɺͻͱ ·ͣʮ௨৴͕Ͱ͖ΔલఏʯͰ(Clientͷ)ϩδοΫͷ࣮ΛਐΊ ΒΕΔ • ʮ͍·ؾʹ͠ͳͯ͘ྑ͍͜ͱʯʮ۩ମʯͰ͋Δ֖વੑ͕ߴ͍ɻ
• ۩ମৄࡉͬͯ͜ͱʮมಈੑʯͰ͋Δ֖વੑ͕ߴ͍ɻ • ʮมಈੑΛΧϓηϧԽͤΑʯͱ͍͏ઃܭ