forked from pkolt/design_patterns
-
Notifications
You must be signed in to change notification settings - Fork 0
/
facade.py
48 lines (34 loc) · 1.3 KB
/
facade.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# coding: utf-8
"""
Фасад (Facade) - паттерн, структурирующий объекты.
Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы.
Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
"""
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!') # Ошибка: Бумага закончилась