Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
170
オブジェクト指向のこころ: 第22章 / DESIGN PATTERNS EXPLAINED: chapter-22
会社で「オブジェクト指向のこころ」の読書会をやっています
hideki kinjyo
PRO
February 03, 2022
Tweet
Share
More Decks by hideki kinjyo
See All by hideki kinjyo
Composerの依存解決 #phpstudy
o0h
PRO
0
77
「影響が少ない」を自分の目でみてみる
o0h
PRO
3
1.3k
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.3k
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
22
5k
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
10
3.3k
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
610
ヒューマンエラーの本を読んだ ~報告会~
o0h
PRO
3
320
みんなでワイワイ「テスト駆動開発」の話をやる会 #techramen24conf
o0h
PRO
4
620
SPLから始める「データ構造」入門
o0h
PRO
7
2.1k
Other Decks in Programming
See All in Programming
個人開発の学生アプリが企業譲渡されるまで
akidon0000
2
1.1k
fieldalignmentから見るGoの構造体
kuro_kurorrr
0
130
The Evolution of the CRuby Build System
kateinoigakukun
1
760
Memory API : Patterns, Performance et Cas d'Utilisation
josepaumard
1
160
Lambda(Python)の リファクタリングが好きなんです
komakichi
4
230
Cline with Amazon Bedrockで爆速開発体験ハンズオン/ 株式会社ブリューアス登壇資料
mhan
0
110
ComposeでのPicture in Picture
takathemax
0
130
Ruby on Railroad: The Power of Visualizing CFG
ydah
0
290
カオスに立ち向かう小規模チームの装備の選択〜フルスタックTSという装備の強み _ 弱み〜/Choosing equipment for a small team facing chaos ~ Strengths and weaknesses of full-stack TS~
bitkey
1
130
複雑なフォームの jotai 設計 / Designing jotai(state) for Complex Forms #layerx_frontend
izumin5210
6
1.5k
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
110
Flutterでllama.cppをつかってローカルLLMを試してみた
sakuraidayo
0
120
Featured
See All Featured
Building an army of robots
kneath
305
45k
For a Future-Friendly Web
brad_frost
177
9.7k
It's Worth the Effort
3n
184
28k
Embracing the Ebb and Flow
colly
85
4.7k
Designing for Performance
lara
608
69k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How STYLIGHT went responsive
nonsquared
100
5.5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
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ͷ)ϩδοΫͷ࣮ΛਐΊ ΒΕΔ • ʮ͍·ؾʹ͠ͳͯ͘ྑ͍͜ͱʯʮ۩ମʯͰ͋Δ֖વੑ͕ߴ͍ɻ
• ۩ମৄࡉͬͯ͜ͱʮมಈੑʯͰ͋Δ֖વੑ͕ߴ͍ɻ • ʮมಈੑΛΧϓηϧԽͤΑʯͱ͍͏ઃܭ