17-я Практическая
03.03.2025
Пример 1: Логин и покупка в маркетплейсе (Шаблон "Цепочка обязанностей")
Python
class User:
def __init__(self, username: str, password: str):
self.username = username
self.password = password
class AuthSystem:
def __init__(self):
self.users = {}
def register(self, user: User):
self.users[user.username] = user.password
def login(self, username: str, password: str) -> bool:
return self.users.get(username) == password
class Marketplace:
def __init__(self):
self.items = {"Телефон": 500, "Ноутбук": 1000}
def purchase(self, username: str, item: str, balance: int) -> str:
if item in self.items and balance >= self.items[item]:
return f"{username} купил {item}"
return "Недостаточно средств или товар отсутствует"
auth = AuthSystem()
market = Marketplace()
user = User("admin", "1234")
auth.register(user)
if auth.login("admin", "1234"):
print(market.purchase("admin", "Телефон", 600))
Пример 2: Очередь задач (Шаблон "Команда")
Python
class Task:
def execute(self):
pass
class DownloadTask(Task):
def __init__(self, filename):
self.filename = filename
def execute(self):
print(f"Загрузка {self.filename}")
class ConvertTask(Task):
def __init__(self, filename):
self.filename = filename
def execute(self):
print(f"Конвертация {self.filename}")
class TaskQueue:
def __init__(self):
self.tasks = []
def add_task(self, task: Task):
self.tasks.append(task)
def execute_all(self):
while self.tasks:
self.tasks.pop(0).execute()
queue = TaskQueue()
queue.add_task(DownloadTask("video.mp4"))
queue.add_task(ConvertTask("video.mp4"))
queue.execute_all()
Пример 3: Управление пользователями (Шаблон "Стратегия")
Python
class AuthStrategy:
def authenticate(self, user, credential):
pass
class SimpleAuth(AuthStrategy):
def authenticate(self, user, password):
return user == "admin" and password == "1234"
class TokenAuth(AuthStrategy):
def authenticate(self, user, token):
return token == "secure_token"
class UserAuth:
def __init__(self, strategy: AuthStrategy):
self.strategy = strategy
def login(self, user, credential):
if self.strategy.authenticate(user, credential):
print(f"{user} вошел в систему")
else:
print("Ошибка входа")
auth1 = UserAuth(SimpleAuth())
auth1.login("admin", "1234")
auth2 = UserAuth(TokenAuth())
auth2.login("admin", "secure_token")
Last updated