let me start with what and why, I mean what are these patterns and why do we need them? Usually, in software development, there is a constant strive to develop the software in a way that executes fast, has less memory consumption and is scalable at t...