Ну вот глянул(пока по диагонали), и да, аля процедурщина на СИ - с несчастными структурами пинаемыми от одной функции к другой.
Читать полностью…Чем больше я погружаюсь в различные парадигмы и стараюсь применять их на практике. Тем больше понимаю, что ни один подход невозможно применить на 100%. Т. К. В итоге ты приходишь к определенным компромиссам.
Вот вся эта история из мира софтостроения напоминает мне мир единоборств: карате круче, борьба круче, бокс круче. И даже придумали вид спорта для этого ММА. И вот проходят годы, а чемпионами становятся не мастера одного стиля, а разных стилей которые могут применять в разных ситуациях.
Так и в разных подходах. У ddd есть свои плюсы и минусы, у ЕО есть тоже много плюсов, но есть и нюансы тоже
Всем привет! Можно ли считать EO как продолжение DDD, в части тактических паттернов?
Читать полностью…всё верно. Но в любой +/- компании от 3х чел разработчиков, вы придёте к тому, что нужно использовать type hinting
Читать полностью…здесь так же зависит от правил команды, если вы в команде. В python мире любят вешать декораторы на методы или функции.
Читать полностью…всё зависит от ваших целей или целей команды. Всегда лучше зависеть от интерфейсов (абстракций), а не конкретных реализаций.
Читать полностью…если через интерфейс надо, то можно вот так
from abc import ABC, abstractmethodЧитать полностью…
class SourceObj:
"""
Ваш исходный объект
"""
def do_something(self):
pass
def do_another(self):
pass
class AbstractDecoratedSourceObj(ABC):
@abstractmethod
def do_something(self):
pass
@abstractmethod
def do_another(self):
pass
class DecoratedSourceObj(AbstractDecoratedSourceObj):
"""
Декоратор для исходного объекта
"""
def __init__(self,
source_obj: SourceObj):
self._source_obj = source_obj
def do_something(self):
# добавляем, что нужно
self._source_obj.do_something()
# добавляем, если нужно ещё что-то
def do_another(self):
# добавляем, что нужно
self._source_obj.do_another()
# добавляем, если нужно ещё что-то
Определить им call который дандер метод та
к чтобы он принимал то что надо декорировать (функцию или класс например)
В питоне есть перегрузка методов но думаю с конструктором не сработает. Хотя не пробовал
Читать полностью…Если считать "продолжение" как "дополнение", то нет. В DDD есть вещи, которые в EO являются антипаттернами.
Читать полностью…ну есть конечно встроенный в Python способ декорировать и методы и классы, но он мне не нравится. Там через аннотации.
Читать полностью…class SourceObj:Читать полностью…
"""
Ваш исходный объект
"""
def do_something(self):
pass
def do_another(self):
pass
class DecoratedSourceObj:
"""
Декоратор для исходного объекта
"""
def __init__(self,
source_obj: SourceObj):
self._source_obj = source_obj
def do_something(self):
# добавляем, что нужно
self._source_obj.do_something()
# добавляем, если нужно ещё что-то
def do_another(self):
# добавляем, что нужно
self._source_obj.do_another()
# добавляем, если нужно ещё что-то