There is no one correct way
One of the major complaints about my recent series of code reviews is that I only say what you shouldn’t do, not what you should.
Well, this blog currently have 4,782 posts, many of which are actually talking about how you should design systems. I am sorry, but I really can’t repeat everything for each post.
I can specifically recommend the following series:
But really you are going to have to go over the archives and look. I am pretty good at assigning categories, and you might want to start with the Design category.
If you want to see how I write code, at last count, I had quite a few projects here: https://github.com/ayende
And last, but certainly not least, I can’t really tell you what you should do. There are too many factors involved to be able to do that honestly. People who assume that there is one correct way to do something also assumes that all projects are the same, with the same requirements, constraints and resources. That is not the case, and I try very hard not to provide any prescriptive design out of thin air.