オブジェクト指å‘: デザインパターン

オブジェクトã®ç”Ÿæˆã«é–¢ã™ã‚‹ãƒ‘ターン

FactoryMethod(工場メソッド)

クラス利用者ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã™ã‚‹ã®ã§ã¯ãªãã€
クラス設計者ãŒã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€åˆ©ç”¨è€…ã«æ¸¡ã™ãƒ‘ターン。
クラス内ã«ä»–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã¦è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ã‚’用æ„ã™ã‚‹ã€‚
クラス数ãŒå¤šãã€ã©ã‚Œã¨ã©ã‚Œã‚’使ã£ã¦ã‚ˆã„ã‹åˆ†ã‹ã‚Šã«ãã„å ´åˆã«ä½¿ç”¨ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’強制ã§ãる。
「デザインパターン FactoryMethod:インスタンス作æˆã‚’サブクラスã«ä»»ã›ã‚‹ã€å‚ç…§

AbstractFactory(抽象的ãªå·¥å ´)

DBã¸ã®æŽ¥ç¶šç­‰ã€ç’°å¢ƒã«ã‚ˆã£ã¦ã‚³ãƒ¼ãƒ‰ãŒå…¨ãç•°ãªã‚‹å ´åˆã«ã€
引数ã«ã‚ˆã£ã¦ä½¿ç”¨ã§ãるオブジェクトを切り分ã‘るパターン。
å–å¾—ã—ãŸç’°å¢ƒå¤‰æ•°ã‚’引数ã¨ã—ã¦ã‚¯ãƒ©ã‚¹ã¸æ¸¡ã—ã€
クラス内ã§DBMSã®ç¨®é¡žã«å¿œã˜ãŸã‚ªãƒ–ジェクトを返ã™äº‹ã§ã€
利用者ã¯DBMSã®ç¨®é¡žã«å¿œã˜ãŸå‡¦ç†ã‚’ã‹ã分ã‘ãªãã¦æ¸ˆã‚€ã€‚
Abstractã¯Javaã«ãŠã‘る抽象メソッド宣言。C#ã§ã¯Virtual。
「デザインパターン AbstractFactory:関連ã™ã‚‹éƒ¨å“を組ã¿åˆã‚ã›ã‚‹ã€å‚ç…§

Builder(構築者)

コンストラクタを複数用æ„ã—利用者ãŒè¤‡é›‘ãªåˆæœŸå€¤è¨­å®šã‚’çœç•¥(カプセル化)ã•ã›ã‚‹ãƒ‘ターン。
メンãƒãƒ¼ãŒå¤šãã€å®šåž‹çš„ãªãƒ—ロパティãŒã‚ã‚‹å ´åˆã«æœ‰ç”¨ã€‚

Prototype(原型)

多ãã®åˆæœŸå€¤ã‚’å¿…è¦ã¨ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã«ãŠã„ã¦ã€
オブジェクトを生æˆã™ã‚‹åº¦ã«åˆæœŸå€¤ã‚’渡ã™ã®ã§ã¯ãªãç”Ÿæˆæ¸ˆã¿ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ã‚¯ãƒ­ãƒ¼ãƒ³ã‚’è¿”ã™ãƒ‘ターン。
利用者ã¯å¤šãã®åˆæœŸå€¤ã‚’渡ã•れã¦ç”Ÿæˆã•れãŸã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ã‚¯ãƒ­ãƒ¼ãƒ³ã‚’もらãˆã‚‹ã®ã§æ¥½ã€‚
「デザインパターン Prototype:コピーã—ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作るã€å‚ç…§

Singleton(一人ã£å­)

システム内ã«å­˜åœ¨ã™ã‚‹ã‚ªãƒ–ジェクトãŒ1ã¤ã§ã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹
「デザインパターン Singleton:ãŸã£ãŸï¼‘ã¤ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€å‚ç…§

ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã®æ§‹é€ ã«é–¢ã™ã‚‹ãƒ‘ターン

Adapter(接続装置)

ã‚るオブジェクトをå—ã‘å–るメソッドãŒã‚ã‚‹å ´åˆã«ã€
å¿…è¦ãªãƒ¡ãƒ³ãƒãƒ¼ã‚’æŒã£ã¦ã„ãªã„オブジェクトã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’継承ã•ã›ã‚‹ã€
接続用オブジェクトを介ã—ã¦ã‚ªãƒ–ジェクトをやりå–ã‚‹ã™ã‚‹ãƒ‘ターン
「デザインパターン Adapter(Wrapper):包んã§å†åˆ©ç”¨ã€å‚ç…§

Composite(æ··åˆç‰©)

構造ã®ç•°ãªã‚‹ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦æœ¨æ§‹é€ ã¨ã—ã¦åˆ¶å¾¡å¯èƒ½ã«ã™ã‚‹
ファイルã¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ§˜ãªç•°ãªã‚‹ã‚ªãƒ–ジェクトãŒå†å¸°çš„ã«å‡¦ç†ã§ãる様ã«ãªã‚‹ã€‚
「デザインパターン Proxy:必è¦ã«ãªã£ã¦ã‹ã‚‰ä½œã‚‹ã€å‚ç…§

Facade(見ã‹ã‘)

システム内ã«å­˜åœ¨ã™ã‚‹è¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ•ェースã«1ã¤ã®çµ±ä¸€ã‚¤ãƒ³ã‚¿ãƒ•ェースを与ãˆã‚‹
利用者ã¯çµ±ä¸€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã®ã¿ã‚’èªè­˜ã™ã‚Œã°è‰¯ã„ã®ã§åˆ©ç”¨ãŒç°¡å˜ã«ãªã‚‹ã€‚
「デザインパターン Facade:シンプルãªçª“å£ã€å‚ç…§

Proxy(代ç†äºº)

主オブジェクトã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¸ã®å‡¦ç†ã®å‰ã«ã€å…±é€šã®ã‚¤ãƒ³ã‚¿ãƒ•ェースをæŒã¤ã‚ªãƒ–ジェクトãŒä»£ç†å‡¦ç†ã‚’行ã†
処ç†ã‚’分散ã™ã‚‹äº‹ã§è² è·ã‚’軽減ã§ãã‚‹
「デザインパターン Composite:容器ã¨ä¸­èº«ã®åŒä¸€è¦–ã€å‚ç…§

ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æŒ¯ã‚‹èˆžã„ã«é–¢ã™ã‚‹ãƒ‘ターン

Mediator(調åœè€…)

相互ã«é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトåŒå£«ã‚’直接やりå–りã•ã›ãšã€
調åœè€…オブジェクトを介ã•ã›ã‚‹ãƒ‘ターン。
オブジェクトã«å¤‰æ›´ã‚’加ãˆãŸå ´åˆã§ã‚‚他オブジェクトを全ã¦å¤‰æ›´ã™ã‚‹å¿…è¦ãŒãªãã€
調åœè€…オブジェクトã«å¤‰æ›´ã‚’加ãˆã‚‹ã ã‘ã§æ¸ˆã‚€ã€‚

Iterator(繰り返ã—)

é…列系データã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹å ´åˆã®å®Ÿè£…パターン。
hasNext()ã¨next()メソッドã ã‘を実装ã—ã€
データ構造を見ã›ãªã„(index番å·ç­‰ã‚’å¼•æ•°ã«æ¸¡ã•ãªã„)。
é…列ã«ãŠã‘ã‚‹indexã®é–‹å§‹å€¤ã‚„終了値ã®èªè­˜ã®é•ã„ã«ã‚ˆã‚‹ãƒŸã‚¹ã‚’防ã’る。
「デザインパターン Iterator:1ã¤ãšã¤æ•°ãˆã‚‹ã€å‚ç…§

Templatemethod(ã²ãªåž‹ãƒ¡ã‚½ãƒƒãƒ‰)

スーパークラスã§å‡¦ç†ã®æµã‚Œã‚’定義ã—ã€ãã®å‡¦ç†ã®è©³ç´°ã¯ã‚µãƒ–クラスã§å®šç¾©ã™ã‚‹ã€‚
「デザインパターン TemplateMethod:具体的ãªå‡¦ç†ã‚’サブクラスã«ä»»ã›ã‚‹ã€å‚ç…§

Follow me!