123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # Пораждающий шаблон проектирования ("Строитель")
- # Предоставляет способ создания составного объекта
- # Отделяет конструирование сложного объекта от его представлени так что в результате одного процесса коструирования могут получаться развные объекты
- import abc
- class Phone():
- def __init__(self):
- self.data: str = ''
- def about_phone(self):
- return self.data
- def append_data(self, string: str):
- self.data += string
- class IDeveloper(metaclass=abc.ABCMeta):
- def create_display(self):
- pass
- def create_box(self):
- pass
- def system_install(self):
- pass
- def get_phone(self) -> Phone:
- pass
- class AndroidDeveloper(IDeveloper):
- def __init__(self):
- self.__phone = Phone()
- def create_display(self):
- self.__phone.append_data("Произведён дисплей Samsung; ")
- def create_box(self):
- self.__phone.append_data("Прозведён корпус Samsung; ")
- def system_install(self):
- self.__phone.append_data("Установлена система Android; ")
- def get_phone(self) -> Phone:
- return self.__phone
- class IphoneDeveloper(IDeveloper):
- def __init__(self):
- self.__phone = Phone()
- def create_display(self):
- self.__phone.append_data("Произведён дисплей Iphone; ")
- def create_box(self):
- self.__phone.append_data("Прозведён корпус Iphone; ")
- def system_install(self):
- self.__phone.append_data("Установлена система Ios; ")
- def get_phone(self) -> Phone:
- return self.__phone
- class Director:
- def __init__(self, developer: IDeveloper):
- self.__developer = developer
- def set_developer(self, developer: IDeveloper):
- self.__developer = developer
- def mount_only_phone(self) -> Phone:
- self.__developer.create_box()
- self.__developer.create_display()
- return self.__developer.get_phone()
- def mount_full_phone(self) -> Phone:
- self.__developer.create_box()
- self.__developer.create_display()
- self.__developer.system_install()
- return self.__developer.get_phone()
- if __name__ == "__main__":
- android_developer: IDeveloper = AndroidDeveloper()
- iphone_developer: IDeveloper = IphoneDeveloper()
- director = Director(android_developer)
- samsung: Phone = director.mount_full_phone()
- print(samsung.about_phone())
- director.set_developer(iphone_developer)
- iphone: Phone = director.mount_full_phone()
- print(iphone.about_phone())
- none: Phone = director.mount_only_phone()
- print(none.about_phone())
- # Прозведён корпус Samsung; Произведён дисплей Samsung; Установлена система Android;
- # Прозведён корпус Iphone; Произведён дисплей Iphone; Установлена система Ios;
- # Прозведён корпус Iphone; Произведён дисплей Iphone; Установлена система Ios; Прозведён корпус Iphone; Произведён дисплей Iphone;
|