#author("2018-03-02T13:07:51+09:00","","") #author("2018-03-02T13:56:06+09:00","","") [[デザインパターン23種]] * デザインパターン INDEX [#f6a28403] * デザインパターン INDEX [#a3eb2ce1] #contents * 0. デザインパターンの基本 [#x08449cb] ** •0.1 はじめに [#n3b4e4cb] ** •0.2 デザインパターンとは [#f4e0d49a] ** •0.3 デザインパターンのメリット [#t757f920] ** •0.4 設計への利用について [#ve3da323] * 0. デザインパターンの基本 [#fd33f1d4] ** 0.1 はじめに [#efcbb488] ** 0.2 デザインパターンとは [#wd02d2f7] ** 0.3 デザインパターンのメリット [#xde252c5] ** 0.4 設計への利用について [#u7834a9d] * 1. Iterator パターン [#v70f8e0f] ** •Itaratorパターンとは [#j6ac14f9] ** •サンプルケース [#d04231ce] ** •実習課題1 [#seaa5e72] ** •実習課題2 [#l11aee06] ** •実習課題3 [#za2dea4f] ** •Iterator パターンのまとめ [#sad53ee1] * 1. Iterator パターン [#kb0fda94] ** Itaratorパターンとは [#b4623751] ** サンプルケース [#eed29da0] ** 実習課題1 [#j8d737ff] ** 実習課題2 [#m338c5e6] ** 実習課題3 [#oaffdb1a] ** Iterator パターンのまとめ [#r6e6ccd4] Iteratorパターンは集約オブジェクトの種類や実装に依存しない、統一的な走査方法を提供したいような場合に利用するとよい * 2. Adapter パターン [#tc83be51] ** •Adapter パターンとは [#i316b605] ** •サンプルケース1(継承を利用した Adapter パターン) [#f7e8607f] ** •サンプルケース2(委譲を利用した Adapter パターン) [#w807477d] ** •Adapter パターンのまとめ [#b98e24e2] * 2. Adapter パターン [#z463af4a] ** Adapter パターンとは [#i4cbdda6] ** サンプルケース1(継承を利用した Adapter パターン) [#reb59a0a] ** サンプルケース2(委譲を利用した Adapter パターン) [#yaa1d4a3] ** Adapter パターンのまとめ [#jb755147] Adapter パターンは利用したいインタフェースを強制的に変えたいような場合に利用するとよい Adapter パターンの実現方法は2つあり、継承を利用したものと委譲を利用したもの * 3. TemplateMethod パターン [#t4a53d70] ** •TemplateMethod パターン [#f8a7522f] ** •サンプルケース [#o7d1f31e] ** •TemplateMethod パターンのまとめ [#m9d0c86d] * 3. TemplateMethod パターン [#wa990a92] ** TemplateMethod パターン [#zf328ece] ** サンプルケース [#mc6a63b1] ** TemplateMethod パターンのまとめ [#d8e5e8f2] TemplateMethod パターンでは、処理のアルゴリズムのみを定め、その処理の具体的な実装は、そのサブクラスに任せています。処理の大枠の手順に変更がない場合 TemplateMethod パターンの利用価値が高くなる TemplateMethod パターンを利用することで、継承先のクラスが間違いなく必要処理のひな型を実装することができる * 4. FactoryMethod パターン [#t5bee9d8] ** •FactoryMethod パターン [#p17d3ba2] ** •サンプルケース [#b4e1f64b] ** •FactoryMethod パターンのまとめ [#pd5d3987] * 4. FactoryMethod パターン [#pc783609] ** FactoryMethod パターン [#m73400bf] ** サンプルケース [#k0d5bb0c] ** FactoryMethod パターンのまとめ [#o4a5db68] TemplateMethodパターンを例にとると、必要な処理を抽象化させることで、必要な処理の実相は義務付け、なおかつ処理の実相方法に幅を持たせることができる * 5. Singleton パターン [#uffcf920] ** •Singleton パターン [#nfe2ca18] ** •サンプルケース [#rd6a8f5d] ** •Singleton パターンのまとめ [#yf20c0a6] * 5. Singleton パターン [#db75df86] ** Singleton パターン [#v155c796] ** サンプルケース [#zcfc945b] ** Singleton パターンのまとめ [#ed59329a] インスタンスの単一実装の宣言ができる 利用ケースは多いが、インスタンスの単一実装は強い制限となるため、実装には注意が必要 * 6. Prototype パターン [#b716b886] ** •Prototype パターン [#nd25f765] ** •サンプルケース [#t38f0bbc] ** •Prototype パターンのまとめ [#b776222a] * 6. Prototype パターン [#i1968330] ** Prototype パターン [#l8f4fe24] ** サンプルケース [#jba8c9d8] ** Prototype パターンのまとめ [#d016a72e] プロトタイプ * 7. Builder パターン [#r412e10d] ** •Builder パターン [#dc436b7f] ** •サンプルケース [#a7976a23] ** •Builder パターンのまとめ [#u40191fd] * 7. Builder パターン [#j2bf8784] ** Builder パターン [#c525bd1a] ** サンプルケース [#cecb6c20] ** Builder パターンのまとめ [#z0d15039] * 8. AbstractFactory パターン [#y656573e] ** •AbstractFactory パターン [#z7265996] ** •サンプルケース [#y8cf6d16] ** •AbstractFactory パターンのまとめ [#s350336e] * 8. AbstractFactory パターン [#g44744fd] ** AbstractFactory パターン [#pc96af38] ** サンプルケース [#pa7f6cb2] ** AbstractFactory パターンのまとめ [#r734ed7d] * 9. Bridge パターン [#fd85c7c5] ** •Bridge パターン [#i9762431] ** •サンプルケース [#b6cabe2f] ** •Bridge パターンのまとめ [#m38cd380] * 9. Bridge パターン [#me31a202] ** Bridge パターン [#d2665427] ** サンプルケース [#j0475398] ** Bridge パターンのまとめ [#k56ed394] * 10. Strategy パターン [#aec74d8f] ** •Strategy パターン [#r959e8e8] ** •サンプルケース [#k3939b7a] ** •Strategy パターンのまとめ [#c1d1a2ce] * 10. Strategy パターン [#wbffe0fe] ** Strategy パターン [#d09a1c70] ** サンプルケース [#s2df48ce] ** Strategy パターンのまとめ [#o4f67713] * 11. Composite パターン [#w56124e9] ** •Composite パターン [#m029a479] ** •サンプルケース [#x499192e] ** •Composite パターンのまとめ [#o4a55ab2] * 11. Composite パターン [#nf85349f] ** Composite パターン [#l1124192] ** サンプルケース [#j805ad3f] ** Composite パターンのまとめ [#y5ca8f09] * 12. Decorator パターン [#ibc7f235] ** •Decorator パターン [#a001c7ba] ** •サンプルケース [#t10df0e4] ** •Decorator パターンのまとめ [#ea3158ec] * 12. Decorator パターン [#scf0ff1a] ** Decorator パターン [#v423c78f] ** サンプルケース [#df8d2f76] ** Decorator パターンのまとめ [#s641b548] * 13. Visitor パターン [#ka943f0f] ** •Visitor パターンとは [#x6bf6e2a] ** •サンプルケース [#i24c681f] ** •Visitor パターンのまとめ [#d734be4d] * 13. Visitor パターン [#qd5c89b3] ** Visitor パターンとは [#yf9df8c7] ** サンプルケース [#f4225dbd] ** Visitor パターンのまとめ [#b77c6ed7] * 14. ChainOfResponsibility パターン [#ueb3f969] ** •ChainOfResponsibility パターン [#eefd6069] ** •サンプルケース [#e600e71d] ** •ChainOfResponsibility パターンのまとめ [#j460a7cd] * 14. ChainOfResponsibility パターン [#ra301569] ** ChainOfResponsibility パターン [#j9865aab] ** サンプルケース [#cf60f9af] ** ChainOfResponsibility パターンのまとめ [#v129e2d7] * 15. Facade パターン [#lf7187f6] ** •Facade パターン [#sf697b1e] ** •サンプルケース [#s2a0365f] ** •Facade パターンのまとめ [#s25f2ba6] * 15. Facade パターン [#jfbf52dd] ** Facade パターン [#vdc6fe14] ** サンプルケース [#td26f501] ** Facade パターンのまとめ [#ne71fabb] * 16. Mediator パターン [#jb9995d3] ** •Mediator パターン [#yca21a69] ** •サンプルケース [#kf946bbe] ** •Mediator パターンのまとめ [#jfd57d44] * 16. Mediator パターン [#y89d6a47] ** Mediator パターン [#z6c4482d] ** サンプルケース [#ef09d42d] ** Mediator パターンのまとめ [#l4f89d47] * 17. Observer パターン [#k099abfb] ** •Observer パターン [#wd1fa1eb] ** •サンプルケース [#k2e28ed6] ** •Observer パターンのまとめ [#a6f06f3b] * 17. Observer パターン [#r4a67f34] ** Observer パターン [#db4f19ba] ** サンプルケース [#y679f396] ** Observer パターンのまとめ [#p6e2474d] * 18. Memento パターン [#t3243eab] ** •Memento パターン [#z9467816] ** •サンプルケース [#zee5867d] ** •Memento パターンのまとめ [#g86eeef8] * 18. Memento パターン [#k23ac3f6] ** Memento パターン [#kf52311f] ** サンプルケース [#h551c589] ** Memento パターンのまとめ [#fd2181c7] Memento パターンは、「思い出」を残して、ある状態を再現することを目的としたパターン Memento インスタンスに残す情報は、利用目的に応じて決定 俗にいうスナップショット * 19. State パターン [#fc1a3e0b] ** •State パターン [#b0e1f252] ** •サンプルケース [#f97abc26] ** •State パターンのまとめ [#ge2dd12b] * 19. State パターン [#y645f808] ** State パターン [#m7cd62b1] ** サンプルケース [#pad9a49a] ** State パターンのまとめ [#r46dc0e0] オブジェクトの「状態」を保持するクラス 効率よく使用することで、条件分岐を少なくすることができる * 20. Flyweight パターン [#r07671c6] ** •Flyweight パターン [#n0ff60c0] ** •サンプルケース [#r6f55a7c] ** •Flyweight パターンのまとめ [#yd8f01d4] * 20. Flyweight パターン [#x8313176] ** Flyweight パターン [#ha6163a4] ** サンプルケース [#zf8ed0d3] ** Flyweight パターンのまとめ [#na3eef27] Flyweight パターンは、無駄なインスタンスを生成を防ぎ、共有することでリソースを無駄なく使う * 21. Proxyパターン [#nfa3b20c] ** •Proxy パターン [#vc9e88ac] ** •サンプルケース [#jdd7245b] ** •Proxy パターンのまとめ [#z6b73bad] * 21. Proxyパターン [#i7428435] ** Proxy パターン [#o7109693] ** サンプルケース [#j9fd8b14] ** Proxy パターンのまとめ [#m8e19e11] Proxyの意味は「代理人」 ミラーリングのように本体と同一の情報を保持することで、代理処理が可能になる * 22. Command パターン [#vc69e164] ** •Command パターン [#y4a58c1a] ** •サンプルケース [#a94ffae6] ** •Command パターンのまとめ [#mc8a0d72] * 22. Command パターン [#xf135746] ** Command パターン [#r07209fa] ** サンプルケース [#r60c38d5] ** Command パターンのまとめ [#v8370145] MVVMのcommandパターンと同じ 参照先のオブジェクトに対しての要求をオブジェクトとして関数の引数に持たせて、参照先のオブジェクトに渡す * 23. Interpreter パターン [#p54eaa99] ** •Interpreter パターン [#b020e11b] ** •サンプルケース [#u2bc78bd] ** •Interpreter パターンのまとめ [#ae6a23c6] * 23. Interpreter パターン [#mf5977c4] ** Interpreter パターン [#de5ff352] ** サンプルケース [#t48913a5] ** Interpreter パターンのまとめ [#b877f9b8] * Reference [#s17c2480] [[TECHSCOREデザインパターン:http://www.techscore.com/tech/DesignPattern/index.html/]]