1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # Структурный шаблон проектирования ("Адаптер на уровена объектов")
- # Позволяет объектам с не совместимыми интерфейсами работать вместе
- import abc
- class IScales(metaclass=abc.ABCMeta):
- @abc.abstractmethod
- def get_weight(self) -> float:
- pass
- class RussianScales(IScales):
- def __init__(self, cw: float):
- self.__currnt_weight = cw
- def get_weight(self) -> float:
- return self.__currnt_weight
- class BritishScales:
- def __init__(self, cw: float):
- self.__currnt_weight = cw
- def get_weight(self) -> float:
- return self.__currnt_weight
- class AdapterForBritishScales(IScales):
- def __init__(self, british_scales: BritishScales):
- self.__british_scales = british_scales
- def get_weight(self) -> float:
- return self.__british_scales.get_weight() * 0.453
- if __name__ == "__main__":
- kg: float = 55
- lb: float = 55
- rScales = RussianScales(kg)
- bScales = AdapterForBritishScales(
- BritishScales(lb))
- print(rScales.get_weight())
- print(bScales.get_weight())
- # 55
- # 24.915
|