1.9 KiB
title | localeTitle |
---|---|
Builder | باني |
البناء هو نمط تصميم يمكن أن يخلص ويقسم إنشاء كائن معقد جدا.
باني في بايثون
هنا مثال على تنفيذ Builder Pattern في Python3.
`# Builder class CourseBuilder(object): def init(self, teacher): self.teacher = teacher
def build_course(self):
self.teacher.provide_homework()
self.teacher.provide_exam()
return self.teacher.course
Teacher
class Teacher(object): def init(self, name=None): self.name = name self.course = Course()
def provide_homework(self):
raise NotImplementedError
def provide_exam(self):
raise NotImplementedError
class MathTeacher(Teacher): def provide_homework(self): self.course.homework = 'This is Math homework provided by {}.'.format(self.name)
def provide_exam(self):
self.course.exam = 'This is Math exam tested by {}.'.format(self.name)
class HistoryTeacher(Teacher): def provide_homework(self): self.course.homework = 'This is History homework provided by {}.'.format(self.name)
def provide_exam(self):
self.course.exam = 'This is History exam tested by {}.'.format(self.name)
Target objects to be produced
class Course(object): def init(self): self.homework = None self.exam = None
def __str__(self):
return 'Homework: {}\nExam: {}\n'.format(self.homework, self.exam)
math_course = CourseBuilder(MathTeacher('Harry')).build_course() print(math_course)
Homework: This is Math homework provided by Harry. Exam: This is Math exam tested by Harry.
history_course = CourseBuilder(HistoryTeacher('Potter')).build_course() print(history_course)
Homework: This is History homework provided by Potter. Exam: This is History exam tested by Potter. `