1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # Структурный шаблон проектирования ("Декоратор")
- # Позволяет добавлять объекту поведение
- import abc
- class Iprocessor(metaclass=abc.ABCMeta):
- @abc.abstractmethod
- def process(self):
- pass
- class Transmitter(Iprocessor):
- def __init__(self, data: str):
- self.__data = data
- def process(self):
- print(f"Данные {self.__data} переданы по каналу связи")
- class Shell(Iprocessor):
- def __init__(self, pr: Iprocessor):
- self._processor = pr
- @abc.abstractmethod
- def process(self):
- self._processor.process()
- class HammingCoder(Shell):
- def __init__(self, pr: Iprocessor):
- super().__init__(pr)
- def process(self):
- print("Наложен помехоустойчивый код Хэмминга->", end='')
- self._processor.process()
- class Encryptor(Shell):
- def __init__(self, pr: Iprocessor):
- super().__init__(pr)
- def process(self):
- print("Шифрование данных->", end='')
- self._processor.process()
- if __name__ == "__main__":
- transmitter: Iprocessor = Transmitter('12345')
- transmitter.process()
- print()
- hamming_code: Shell = HammingCoder(transmitter)
- hamming_code.process()
- print()
- encryptor: Shell = Encryptor(hamming_code)
- encryptor.process()
- # Данные 12345 переданы по каналу связи
- # Наложен помехоустойчивый код Хэмминга->Данные 12345 переданы по каналу связи
- # Шифрование данных->Наложен помехоустойчивый код Хэмминга->Данные 12345 переданы по каналу связи
|