@oskarsh Just be aware that there is a sweet spot how how much "architecture" your plugin requires. You can easily overcomplicate the development with a concept that tries to generalize every single aspect.
As for software paradigms, the one that I found most useful in plugin development is the broadcaster / listener paradigm (aka. observer pattern). model (check the broadcaster system for a inbuilt system that enforces this paradigm). you basically define event sources and attach stuff that reacts to it in a separate step. This removes much of the logic from the actual coding and the scripts become more declarative in nature.