در طراحی نرم افزارها اصولا مشکلاتی وجود دارد که راه حلهای غلبه بر این مشکلات رو design pattern میگن
جالا تقسیم بندیهای مختلفی داره و اصلا هم به زبان خاصی وابسته نیست و عمومیت داره
مثلا از الگوهای خیلی رایج مثلا این هستش که شما میخواین از کلاسی در سطح application فقط و فقط یک object باشه
حدود 20 تا 30 design pattern معروف هستش که توی کتابها هم به اونا پرداخته میشه
لینک زیر خیلی منبع جالبی برای فهم عمومیه این مطلبه
http://sourcemaking.com/design_patterns