Wie gesagt ich habe selbst Code voll mit diesen Fehlern. Daher bin ich leider der falsche der dir wirklich einen Rat geben könnte.
Nach meinem Verständniss, müsste grob der User ein Datenbankmodell sein und die Aktionen (Verarbeitung) mit diesem erfolgen nur in einem Controllerobjekt. Die Liste ist ein Array von Objekten oder eine Ableitung davon. Die Darstellung übernehmen dann andere Objekte i.d.R. Views.
Aber wie gesagt ich schreibe darüber, merke aber in der Praxis die Umsetzung fällt mir seit Jahren ebenfalls schwer und ergibt sich dann oft erst im Kontext der tatsächlichen Anwendung wenn ich merke, wo meine Objekte zu Abhängig sind und ich mich wieder in eine Einbahnstrasse programmiert habe.
(Aber das ist vielleicht auch ein Teil des Spaßes des Hobbyprogrammierers

)