It's natural to design a game using the object-oriented programming (OOP) paradigm. After all, a game represents a combination of objects that intensively interact with each other. In our strategy game, we have buildings built by units. Units defend themselves from enemy units and so on. This inter-communication leads to the growth of complexity. As the project evolves and gains more features, it will become harder to support it. It's already obvious to us that designing is one of the most important (if not the most important) part of building projects. Incorporating design patterns will drastically improve both the design process and project support.
Let's examine some design patterns that are useful in game development. We will start with classic patterns and then discuss more game-specific patterns.