<p>Reposting the design principles that led me to this refactoring:</p>
<ul>
<li>Minimize dependencies on all levels. ie. small public interfaces for classes and libraries.</li>
<li>Prefer static functions for stateless helpers that don't contain domain logic</li>
<li>Prefer composition over inheritance for code reuse</li>
<li>Prefer interfaces over inheritance for polymorphism</li>
<li>Don't depend on global state in regular classes, better to inject it via constructor</li>
</ul>
<p>I assume these are not contentious and am omitting justification. Happy to discuss these points if there is dissent.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/bisq-network/bisq/issues/3240?email_source=notifications&email_token=AJFFTNSQJGST7BO6HVRZWP3QJC5NNA5CNFSM4IVPR4N2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6N5Y6I#issuecomment-530308217">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNVV6HWJML52BGGZDL3QJC5NNANCNFSM4IVPR4NQ">mute the thread</a>.<img src="https://github.com/notifications/beacon/AJFFTNVFFFKEQTASJE7FGVDQJC5NNA5CNFSM4IVPR4N2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6N5Y6I.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/bisq-network/bisq/issues/3240?email_source=notifications\u0026email_token=AJFFTNSQJGST7BO6HVRZWP3QJC5NNA5CNFSM4IVPR4N2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6N5Y6I#issuecomment-530308217",
"url": "https://github.com/bisq-network/bisq/issues/3240?email_source=notifications\u0026email_token=AJFFTNSQJGST7BO6HVRZWP3QJC5NNA5CNFSM4IVPR4N2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6N5Y6I#issuecomment-530308217",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>