Я изо всех сил пытаюсь понять, как преобразовать мой сайт в более чистый код, позволяя моим доменным объектам вести себя так.
Я надеюсь, что мне удалось описать мою проблему в этой диаграмме:
A - это мой текущий дизайн проекта веб-приложения, а B - мой целевой дизайн.
Я пытаюсь вставить всю логику из моего текущего BL в мои сущности так, чтобы строка кода была такой:
var customer = new CustomerLogic().GetCustomer(id);
Станет:
var customer = new Customer(id);
Или
var customer = Customer.Get(id);
Это становится еще более очевидным, когда я вижу полиморфную ситуацию.
Проблема в том, что, хотя в моем текущем дизайне ( A ) сущности просто используются, поэтому все проекты имеют ссылку на него, с будущим дизайном ( B ) сущности будут должен иметь ссылку на нижний уровень.
Но так как я также хочу, чтобы мой DAL доставлял мои сущности обратно вызывающему клиенту, у меня есть циклическая ссылка.
Мой текущий дизайн делает мой код более процедурным, чем Object Oriented, и я хочу это изменить.
Итак, как я могу решить эту циклическую ссылку, поддерживая DDD?