Еще один паттерн из группы структурирующих, – фасад. Фасад предоставляет унифицированный интерфейс, “оборачивая” собой подсистему. Им пользуются в случае если необходимо изолировать клиента от “разухабистого” API подсистемы, упрощая его и сокращая количество объектов о которых должен знать клиент. Фасад может упростить переносимость кода между разными платформами или подсистемами.
Вот как выглядит Фасад на диаграмме:
Простой пример, реализующий Фасад на Python:
class Tree:
def grow(self):
print("grow tree")
class Child:
def born(self):
print("born child")
class House:
def build(self):
print("build house")
class TheMenFacade:
def __init__(self):
self._tree = Tree()
self._child = Child()
self._house = House()
def growTree(self):
self._tree.grow()
def bornChild(self):
self._child.born()
def buildHouse(self):
self._house.build()
if __name__ == '__main__':
print 'Content-Type: text/plain'
print ''
facade = TheMenFacade()
facade.bornChild()
facade.buildHouse()
facade.growTree()
--------------
born child
build house
grow tree