# Java å®ç°çé¢åå¯¹è±¡è½¯ä»¶è®¾è®¡æ¨¡å¼ [](https://github.com/JamesZBL/java_design_patterns/blob/master/LICENSE) [](https://travis-ci.org/JamesZBL/java_design_patterns) [](https://gitter.im/java_design_patterns/) 设计模å¼ï¼Design patternï¼æ¯ç¨äºé¢å对象ç¨åºè®¾è®¡çãæææé«ä»£ç éç¨æçãæçæç¡®ä½¿ç¨åºæ¯åç±»çç¨åºè®¾è®¡è§èçæ»ç»ã使ç¨è®¾è®¡æ¨¡å¼ç ç®çï¼ä¸ºäºä»£ç å¯éç¨æ§ãè®©ä»£ç æ´å®¹æè¢«ä»äººçè§£ãä¿è¯ä»£ç å¯é æ§ã 设计模å¼ä½¿ä»£ç ç¼åçæ£å·¥ç¨åï¼è®¾è®¡æ¨¡å¼æ¯è½¯ä»¶å·¥ç¨çåºç³èç»ï¼å¦åå¤§å¦ çç»æä¸æ ·ãå¨ç¨åºè®¾è®¡ä¸ å¼å ¥è®¾è®¡æ¨¡å¼å¯ä»¥æé«ä»£ç çå¯è¯»æ§åç¨åºè¿è¡æ¶çå¯é æ§ï¼ä½¿ç¨åºè®¾è®¡å¾å°è§èåç»ä¸ã 设计模å¼ä»£è¡¨äºæä½³çå®è·µï¼é常被æç»éªçé¢å对象ç软件å¼å人åæéç¨ãè®¾è®¡æ¨¡å¼æ¯è½¯ä»¶å¼å人åå¨è½¯ä»¶å¼åè¿ç¨ä¸é¢ä¸´ çä¸è¬é®é¢çè§£å³æ¹æ¡ãè¿äºè§£å³æ¹æ¡æ¯ä¼å¤è½¯ä»¶å¼å人åç»è¿ç¸å½é¿ç䏿®µæ¶é´çè¯éªåé误æ»ç»åºæ¥çã è®¾è®¡æ¨¡å¼æ¯ä¸å¥è¢«åå¤ä½¿ç¨çã夿°äººç¥æçãç»è¿åç±»ç¼ç®çã代ç 设计ç»éªçæ»ç»ã使ç¨è®¾è®¡æ¨¡å¼æ¯ä¸ºäºéç¨ä»£ç ãè®©ä»£ç æ´å®¹æè¢«ä»äººçè§£ã ä¿è¯ä»£ç å¯é æ§ã 毫æ çé®ï¼è®¾è®¡æ¨¡å¼äºå·±äºä»äººäºç³»ç»é½æ¯å¤èµ¢çï¼è®¾è®¡æ¨¡å¼ä½¿ä»£ç ç¼å¶çæ£å·¥ç¨åï¼è®¾è®¡æ¨¡å¼æ¯è½¯ä»¶å·¥ç¨çåºç³ï¼å¦å大å¦ç ä¸ååç ç³ä¸æ ·ã项ç®ä¸åçå°è¿ç¨è®¾è®¡æ¨¡å¼å¯ä»¥å®ç¾å°è§£å³å¾å¤é®é¢ï¼æ¯ç§æ¨¡å¼å¨ç°å®ä¸é½æç¸åºçåçæ¥ä¸ä¹å¯¹åºï¼æ¯ç§æ¨¡å¼é½æè¿°äºä¸ä¸ªå¨æä»¬ å¨å´ä¸æéå¤åççé®é¢ï¼ä»¥å该é®é¢çæ ¸å¿è§£å³æ¹æ¡ï¼è¿ä¹æ¯è®¾è®¡æ¨¡å¼è½è¢«å¹¿æ³åºç¨çåå ã ## ç®å½ ### æå»ºæ¨¡å¼ * Builder ï¼å建è ï¼ * Abstract Factory ï¼æ½è±¡å·¥åï¼ * Factory Method ï¼å·¥åæ¹æ³ï¼ * Prototype ï¼å忍¡å¼ï¼ * Singleton ï¼å便¨¡å¼ï¼ ### ç»ææ¨¡å¼ * Adapter ï¼éé å¨ï¼ * Bridge ï¼æ¡¥æ¥æ¨¡å¼ï¼ * Composite ï¼ç»å模å¼ï¼ * Decorator ï¼è£ 饰模å¼ï¼ * Facade ï¼å¤è§æ¨¡å¼ï¼ * Flyweight ï¼äº«å 模å¼ï¼ * Proxy ï¼ä»£ç模å¼ï¼ ### è¡ä¸ºæ¨¡å¼ * Chain of Responsibility ï¼èè´£é¾æ¨¡å¼ï¼ * Command ï¼å½ä»¤æ¨¡å¼ï¼ * Interpreter ï¼è§£é卿¨¡å¼ï¼ * Iteratorï¼è¿ä»£å¨æ¨¡å¼ï¼ * Mediatorï¼ä¸ä»è 模å¼ï¼ * Mementoï¼å¤å¿å½æ¨¡å¼ï¼ * Observerï¼è§å¯è 模å¼ï¼ * Stateï¼ç¶ææ¨¡å¼ï¼ * Strategy ï¼çç¥æ¨¡å¼ï¼ * Template Method ï¼æ¨¡æ¿æ¹æ³ï¼ * Visitorï¼è®¿é®è 模å¼ï¼