Design patterns, simply put, are a way for you to structure your solution's code in a way that allows you to gain some kind of benefit. Such as faster development speed, code reusability, and so on. All patterns lend themselves quite easily to the OOP paradigm .