В чем разница фасада и адаптера
Python
Middle
Без компании
В чем разница фасада и адаптера
Ответы
Фасад и адаптер — структурные паттерны, но решают разные задачи:
**Фасад** упрощает работу со сложной системой, предоставляя удобный интерфейс для клиента. Он не меняет существующую функциональность, а лишь объединяет вызовы.
```
class Engine:
def start(self): pass
class AC:
def turn_on(self): pass
class CarFacade:
def __init__(self):
self.engine = Engine()
self.ac = AC()
def start_car(self):
self.engine.start()
self.ac.turn_on()
```
**Адаптер** преобразует интерфейс одного класса в интерфейс, ожидаемый клиентом. Используется, когда нужно совместить несовместимые интерфейсы.
```
class EuropeanSocket:
def voltage(self): return 220
class USPlug:
def need_120v(self): pass
class Adapter(USPlug):
def __init__(self, socket):
self.socket = socket
def need_120v(self):
return self.socket.voltage() / 2
```
Фасад — упрощение, адаптер — совместимость. Фасад работает с целой подсистемой, адаптер — с одним классом.