This intermediate path explores how design patterns can help you organize Ruby applications and solve recurring software design problems. You will revisit encapsulation, inheritance, polymorphism, and abstraction before examining the major categories of design patterns.
You will learn how creational patterns provide flexible approaches to object creation, structural patterns define relationships among components, and behavioral patterns manage communication and responsibilities between objects.
Throughout the path, you will apply these techniques to practical programming challenges. You will bring the concepts together by designing a smart home system with an emphasis on maintainability, scalability, and adaptability.