Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オブジェクト指向のこころ: 第25章 / DESIGN PATTERNS EXPLAINED:...

オブジェクト指向のこころ: 第25章 / DESIGN PATTERNS EXPLAINED: chapter-25

会社で「オブジェクト指向のこころ」の読書会をやっています

hideki kinjyo

March 03, 2022
Tweet

More Decks by hideki kinjyo

Other Decks in Programming

Transcript

  1. ΧϓηϧԽ ͳʹɾͳΜͰ • ΧϓηϧԽ͸ʮ͋ΒΏΔ΋ͷͷӅṭ(P18)ʯ • “ΧϓηϧʢӳޠɾϑϥϯεޠɿCapsuleɺυΠπޠɿKapselʣͱ͸ɺ ʮখശʯΛҙຯ͢Δϥςϯޠͷ capsula ʹ༝དྷ͠ɺԿ͔Λ٧Ί͓ͯͨ͘ Ίͷ༰ثͷ͜ͱΛද͢ɻ”

    https://ja.wikipedia.org/wiki/Χϓηϧ • ར༻ऀʹରͯ͠ɺʮ಺෦ΛӅ͢ʯʮެ։͢Δ৘ใΛඞཁ࠷௿ݶͷ΋ͷʹ ݶఆ͢Δʯ • ΦϒδΣΫτࢦ޲͕΍Γ͍ͨ͜ͱ = ߴڽूɾૄ݁߹ • ΧϓηϧԽ͸ʮૄ݁߹ʯΛՃ଎ͤ͞ΔͨΊͷ༗༻ͳखஈ
  2. ʮڞ௨ੑΛந৅ʹʯͰͳ͔ͬͨΒԿ͕ʁ • ྫ͑͹ʮখ͍͞ϊʔτʯͱʮେ͖͍ϊʔτʯ͸ʮେ͸খΛ݉ͶΔʯͷͰɺந৅ /ܧঝؔ܎ʹ͍͔ͨ͠ʁ • ڞ௨͍ͯ͠Δͷ͸ʮϊʔτੑʯͷ͸ͣ • ʮ׽ࣈ࿅शாʯͱʮࣗ༝ாʯ͸ʁ • ʮݘʯʮೣʯʮΫδϥʯͷؔ܎͸ʁ

    • ੜ෺্ֶͷʮᄡೕྨʯ͕ɺఏڙ͢ΔγεςϜ಺෦ʹ͓͚Δʮ໨తʯͷ؍఺͔ Βʮҙຯͷ͋Δڞ௨ੑʯͳͷ͔ʁ • ʮݘʯʮೣʯʮΠϯίʯͷؔ܎͸ʁ • ʮѪ؝ಈ෺ʯ΍ʮ໐͘(ੜ෺)ʯͱ͍͏ڞ௨ੑ͕େࣄʁ • ʮࣂ͍ํʯʮ໐͖ํʯ͸ՄมੑʹͳΔ
  3. ʮಉ͡໨తʹجͮ͘ཁૉʯͱ
 ଊ͑ΒΕͦ͏ʁ େֶӃੜ ֶੜ ߨٛΛड͚ΔΑ ڭࣨΛҠ ಈ͢ΔΑ Ξϯέʔτ ճऩ͢ΔΑ ߨٛΛड͚ΔΑ

    ߨٛΛฉ͚ Δౕ ߨٛͷ ӡӦαϙʔ τౕ डߨ४උͰ ͖Δౕ ڞ௨ੑͷநग़ʹ΋ͱͮ͘ந৅Խ
  4. InterfaceΛඞͣ࢖͏ʁ • ίίͰࢦ͍ͯ͠Δͷ͸ɺඞͣ͠΋ݴޠػೳ্ͷʮInterfaceʯͱ ͍͏ҙຯͰ͸ͳ͍ɻ͸ͣɻ • ΠϯλʔϑΣΠε = ʮԿΛೖΕͨΒʯʮ(ԿΛͯ͠)ԿΛฦ͔͢ʯ • ݴ͍׵͑Δͱʮ࢖͍ํʯʹΑͬͯʮԿ͕ಘΒΕΔ͔ʯ

    • ͜Ε͸ʮ໨తʯ΍ʮػೳʯʹԊͬͨந৅Խ • ͭ·Γɺʮ࣮ଶ(۩৅)͔Βۃྗ཭Εͯɺ໨త(ϩʔϧ)ಉ࢜ͷܨ͕ Γʹด͡ͳ͕ΒઃܭΛ͠·͠ΐ͏ʯ͘Β͍ͷ࿩ • ɾɾͱݸਓతʹ͸ࢥͬͨͷͰ͕͢ɺօ͞Μ͸Ͳ͏Ͱ͔͢ʁ
  5. େֶӃੜ Ξϯέʔτ ճऩ͢ΔΑ ߨٛΛड͚ΔΑ ߨٛΛฉ͚ Δౕ ߨٛͷ ӡӦαϙʔ τౕ डߨ४උͰ

    ͖Δౕ ந৅ʹΑͬͯྲྀಈతཁૉΛ֓೦Խ͢Δྫ 5" Ξϯέʔτ ճऩ͢ΔΑ
  6. ֶੜ ֶशͷͨΊʹ ߨٛΛड͚ΔΑ ߨٛΛฉ͚ Δౕ ந৅ʹΑͬͯྲྀಈతཁૉΛ֓೦Խ͢Δྫ ࢹ ࡯Ϛϯ ධՁΛ͠ͳ͕Β ߨٛʹࢀՃ͢ΔΑ

    ؅ཧ͢Δσʔλ • ߨࢣͷύϑΥʔ Ϛϯε • डߨऀͷ൓Ԡ ؅ཧ͢Δσʔλ • ڭत಺༰ • ࢼݧɺ॓୊ͷ৘ใ
  7. ͋ͱ7߲໨ڍ͕͍ͬͯΔΑ • Ϋϥεதʹଘࡏ͢Δྲྀಈతཁૉ͔Βɺҟ࣭ͳྲྀಈతཁૉΛ੾Γग़͢ • ݁߹౓Λ௿͘͢ΔΑ͏຿ΊΔ • ڽू౓Λߴ͘͢ΔΑ͏຿ΊΔ • ΦϒδΣΫτΛ࢖༻͢ΔίʔυͱɺͦͷΦϒδΣΫτΛੜ੒͢Δ ίʔυΛ෼཭͢Δ

    • OAOOϧʔϧΛݫक͢Δ • ҙਤʹΑΔϓϩάϥϛϯάͱҙਤΛ໌֬ʹද͢ωʔϛϯάϧʔϧΛ ༻͍ͯɺίʔυͷՄಡੑ޲্ʹ౒ΊΔ • ίʔσΟϯάΛ։࢝͢ΔલʹɺίʔυͷςετՄೳੑΛߟྀ͢Δ
  8. ڞ௨ੑ/Մมੑ෼ੳͱύλʔϯ • σβΠϯύλʔϯ͸ɺʮΑ͋͘Γ͕ͪͳ໰୊Xʯʹରͯ͠ʮ͍͍ײ͡ ʹϋϚΓ΍͍͢ܗࣜʯͱ͍͏දݱํ๏ΛఆࣜԽͨ͠΋ͷɾɾͱݴ͑ Δ • Α͋͘Γ͕ͪͳ໰୊ = ڞ௨ੑ •

    ʮ࣮૷ͷܗʯΑΓ΋ʮͲ͏͍͏෩ʹ໨ͷલͷ໰୊Λೝࣝ͢Δ͔ʯͷ खॿ͚ʹͳΔʂ • strategyͬΆ͍໰୊ɺfacadeͬΆ͍໰୊ɺfactoryͬΆ͍໰୊etc… • ʮ˓˓ͬͯ໰୊͕͋ΔͷΛ஌͍ͬͯΔʯ͜ͱͷՁ஋
  9. ·ͱΊతͳ΋ͷ • ΦϒδΣΫτࢦ޲ݪଇ • (޿͍ҙຯͰͷ)ΧϓηϧԽΛେࣄʹͯ͠ʂ • ߴڽूͱૄ݁߹Λ໨ࢦͯ͠ʂ • ڞ௨ੑΛநग़ͯ͠ந৅Λ࡞ͬͯɺந৅ΛཔΓʹͨ͠ઃܭΛͯ͠ʂ •

    σβΠϯύλʔϯ • ΦϒδΣΫτࢦ޲ݪଇΛ׆͔͠·ͬͨ͘ྑ͍ײ͡ͷϨγϐूͰ΋͋ΔΑʂ • ύλʔϯΛ஌ͬͯɺਂΊΔ͜ͱͰ໰୊ྖҬ΁ͷΞϓϩʔν΋ڧ͘ͳΕΔʂ • ύλʔϯͦͷ΋ͷΛ஌Δ͜ͱͰ͸ͳ͍Αɺʮ໰୊ΛݟۃΊΒΕΔΑ͏ʹͳ ΔʯʮͦͷରԠ๏ͱɺͦΕʹΑΔӨڹʯΛ௫ΊΔΑ͏ʹͳΔͷ͕େࣄʂ • ྑ͍ઃܭʹΑͬͯɺมߋʹڧ͍γεςϜΛߏங͍ͯ͘͠ʂ