डिज़ाइन पैटर्न अनुभवी ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर डेवलपर्स द्वारा उपयोग की जाने वाली सर्वोत्तम प्रथाओं का प्रतिनिधित्व करते हैं। डिज़ाइन पैटर्न सॉफ़्टवेयर डेवलपमेंट के दौरान सॉफ़्टवेयर डेवलपर्स द्वारा सामना की जाने वाली सामान्य समस्याओं के समाधान हैं। ये समाधान काफी लंबी अवधि में कई सॉफ़्टवेयर डेवलपर्स द्वारा ट्रायल एंड एरर से प्राप्त किए गए थे।
डिज़ाइन पैटर्न भाषा-अज्ञेय हैं। डिज़ाइन पैटर्न को तीन श्रेणियों में वर्गीकृत किया जा सकता है: क्रिएशनल, स्ट्रक्चरल और बिहेवियरल पैटर्न।
क्रिएशनल पैटर्न - ये डिज़ाइन पैटर्न ऑब्जेक्ट्स बनाने का एक तरीका प्रदान करते हैं जबकि निर्माण तर्क को छिपाते हैं, बजाय सीधे new ऑपरेटर का उपयोग करके ऑब्जेक्ट्स को इंस्टेंशिएट करने के। यह प्रोग्राम को दिए गए उपयोग के मामले के लिए कौन से ऑब्जेक्ट्स बनाने की आवश्यकता है यह तय करने में अधिक लचीलापन देता है। उदाहरण पैटर्न: फैक्टरी, बिल्डर, सिंगलटन, आदि।
स्ट्रक्चरल पैटर्न - ये डिज़ाइन पैटर्न क्लास और ऑब्जेक्ट कंपोजिशन से संबंधित हैं। इंटरफेस को कंपोज करने और ऑब्जेक्ट्स को कंपोज करने के तरीकों को परिभाषित करके नई कार्यक्षमता प्राप्त करने के लिए इनहेरिटेंस की अवधारणा का उपयोग किया जाता है। उदाहरण पैटर्न: एडाप्टर, डेकोरेटर, फेसेड, आदि।
बिहेवियरल पैटर्न - ये डिज़ाइन पैटर्न विशेष रूप से ऑब्जेक्ट्स के बीच संचार से संबंधित हैं। उदाहरण पैटर्न: ऑब्जर्वर, इटरेटर, स्ट्रैटेजी, आदि।