Object Oriented design has a lot of hype around it. And a lot of this hype is meaningful. OO design, when used appropriately and correctly, can help us with enforce reusability and maintainability of the software developed. Ofcourse, when misused, it can and surely will cause disaster.
Let us look into the concepts of Object Oriented Design and the common Design Patterns.
Having an understanding of the core concepts, let us now dive into some of the important design patterns. In 1994, the famous Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides) formalized the principles of Design Patterns by introducing 23 distinct patterns - classified into 3 groups. After a few decades, these continue to be the core patterns of Object Oriented Design.
Any Object Oriented design consists of classes and objects. That requires three main components to the code. Creating the objects, Structuring their contents, and defining their Behavior and interaction with each other.
These form the major design patterns used in Object Oriented Design. They were developed long ago, with C++ in mind. But they continue to be as valid even today. Over the years, many languages have incorporated them within their syntax and modules.