Фасад — структурный паттерн проектирования, позволяющий дать интерфейс более высокого уровня к сложной системе.
В отличии от адаптера, используется новый интерфейс.
Большой минус в том, что в данной концепции, фасад может стать godlike, связанным со всей системой.
Иногда фасад превращают в синглтон, т.к. обычно нужен всего 1 фасад.
реализация паттерна
[сode lang=»python»]
# coding: utf-8
class Paper(object):
«»»Бумага»»»
def __init__(self, count):
self._count = count
def get_count(self):
return self._count
def draw(self, text):
if self._count > 0:
self._count -= 1
print text
class Printer(object):
«»»Принтер»»»
def error(self, msg):
print ‘Ошибка: %s’ % msg
def print_(self, paper, text):
if paper.get_count() > 0:
paper.draw(text)
else:
self.error(‘Бумага закончилась’)
class Facade(object):
def __init__(self):
self._printer = Printer()
self._paper = Paper(1)
def write(self, text):
self._printer.print_(self._paper, text)
f = Facade()
f.write(‘Hello world!’) # Hello world!
f.write(‘Hello world!’) # Ошибка: Бумага закончилась
[/code]