Which of these patterns is/are best?
There is no straightforward answer for this type of question. It depends on many factors (the situation, the demand, the constraints, etc.). But if you know all of these patterns, you will have the flexibility to decide. In real life, it is quite possible that we need to use a combination of these patterns to design a requirement.
Why should we use design patterns?
These are general reusable solutions for software design problems which we see repeatedly in real-world software development. They help us to avoid unnecessary and scattered implementations. Please refer to the section “Introduction” ...