نمط يوفر واجهة لإنشاء الكائنات ويترك للفئات الفرعية تحديد النوع.
يجعل الكود أكثر مرونة وقابلاً للتوسع دون تعديل الكود الأساسي.