รูปแบบการออกแบบ (design pattern) ถูกออกแบบมาเพื่อหลีกเลี่ยงปัญหาที่อาจจะเกิดขึ้น โดยถูกพัฒนาต่อเนื่องมาจากรูปแบบการออกแบบที่มีอยู่ในอดีต การศึกษารูปแบบการออกแบบทำให้เราทราบถึงปัญหาที่เคยเกิดและวิธีการที่จะหลีกเลี่ยง รูปแบบการออกแบบมีหลายแนวทางที่ช่วยให้เราพัฒนาซอฟต์แวร์ที่มีความยืดหยุ่นและสามารถนำกลับมาใช้ใหม่ได้ ซึ่งเป็นเรื่องที่มักจะถูกลืม แต่ก็มีหลายๆสถานะการณ์ที่การยึดติดกับรูปแบบการออกแบบก็อาจจะไม่เหมาะสม เพราะเมื่อเรายึดตามรูปแบบการออกแบบนั่นหมายถึงเรากำลังใช้แนวทางภาพสรุป ดังนั้นเราต้องพิจารณาให้ดีว่าเราได้ประโยชน์ในการเพิ่มขยายในอนาคตจากการใช้แนวทางภาพสรุปเหล่านั้นจริงๆ ไม่เช่นนั้นมันจะทำให้เกิดความยากในการทำความเข้าใจสำหรับทีมพัฒนาที่จะมาปรับปรุงโปรแกรมในอนาคตโดยเปล่าประโยชน์
รูปแบบการออกแบบเป็นเหมือนคำศัพท์ที่เข้าใจกันในหมู่นักพัฒนา เพียงแค่บอกชื่อรูปแบบก็เข้าใจว่าหมายถึงอะไร โดยไม่ต้องลงในรายละเอียดของการโปรแกรม ทำให้การคุยเรื่องการออกแบบกระชับขึ้น รูปแบบการออกแบบประกอบด้วย 3 ส่วนคือ ชื่อ ปัญหาที่พยายามป้องกัน และวิธีการในการป้องกัน รูปแบบการออกแบบไม่ขึ้นอยู่กับภาษาโปรแกรมและสามารถใช้ได้กับทุกภาษาโปรแกรมเชิงวัตถุ รูปแบบการออกแบบมีทั้งข้อดีและข้อด้อย ดังนั้นเมื่อเราเลือกด้านที่มีประโยชน์ของมันมาใช้ก็ต้องแน่ใจว่าสามารถยอมรับข้อด้อยของมันได้ด้วย การตัดสินใจนำรูปแบบการออกแบบมาใช้จะต้องมีการวางแผนล่วงหน้าหรือหากเป็นการแก้ไขโปรแกรมเดิมก็ต้องทำด้วยความระมัดระวัง ดังนั้นต้องพิจารณาให้แน่ชัดก่อนลงมือทำ
รูปแบบการออกแบบสามารถแบ่งออกเป็นหมวดหมู่ได้ 3 กลุ่ม คือ creational design pattern ซึ่งช่วยให้เราสร้างออบเจกต์ที่เพิ่มขยายความสามารถได้ , structural design pattern ซึ่งช่วยให้เราหลีกเลี่ยงปัญหาจากการพัฒนาโปรแกรมเพิ่มเติมในอนาคต และ behavioural design pattern ช่วยให้เราสามารถเปลี่ยนพฤตกรรมของโปรแกรมในขณะใช้งานได้