реализовал паттерн Стратегия, можно писать новые режимы работы

master
serr 2025-02-04 16:08:51 +03:00
parent 125a4f3ea1
commit d92d7adc9b
2 changed files with 24 additions and 3 deletions

View File

@ -1,11 +1,14 @@
from mvc.models import VimModel
from mvc.views import VimView
from mvc.controllers import EditController
from mvc.controllers import Controller, EditStrategy
def main():
model = VimModel()
view = VimView()
controller = EditController(model, view.curses_adapter)
# начальный режим - редактирование
strategy = EditStrategy(model, view.curses_adapter)
controller = Controller(strategy)
# Загрузка файла для редактирования
file_path = "example.txt" # Укажите путь к файлу

View File

@ -1,7 +1,25 @@
from abc import ABC, abstractmethod
from mvc.views import CursesAdapter
from mvc.models import VimModel
class EditController:
class IStrategy(ABC):
def __init__(self, model: VimModel, adapter: CursesAdapter):
self.model = model
self.adapter = adapter
@abstractmethod
def HandleInput(self, symbolCode: int) -> bool:
pass
class Controller:
def __init__(self, strategy: IStrategy):
self.strategy = strategy
def SetController(self, strategy: IStrategy):
self.strategy = strategy
def HandleInput(self, symbolCode: int):
return self.strategy.HandleInput(symbolCode)
class EditStrategy(IStrategy):
def __init__(self, model: VimModel, adapter: CursesAdapter):
self.model = model
self.adapter = adapter