Start with Principles before considering Patterns, because it's the overarching design principles that inform and motivate the emergence of patterns.
For your particular problem you are best served by following principles first and foremost. If you arrive at a well-known Pattern then, congratulations, you just re-discovered a Pattern, good for you. The problem is that it could take you a long time so it depends if you want to risk inventing a few anti-patterns along the way or whether you want a short-cut to something that's already been published. Consider it though, because you'll learn more than reading someone else's description of their own work.
The down-side (as many of the very good answers here have already pointed out) is that you could be tempted to apply a published Pattern in a context where it doesn't fit or just is not warranted.
A good place to start with Design Principles is by looking at Uncle Bob Martin's SOLID principles, the nice thing about them, once they sink in, is that you feel like you already knew them (which makes you feel smart) and
Uncle Bob's book Clean Code also covers alot of the same principles with some useful examples, only not so explicitly citing the principles as the original articles, focussing more on generally organising and tidying up your Functions, Classes, etc.