Unit-1 Introduction 1.1What is a Design Pattern? Designing reusable object-oriented software is harder. · Must find relevant objects, factor them into classes at the right granularity, define class interfaces and inheritance hierarchies, and establish key relationships among them. · Design should be specific to the problem at hand but also general enough to address future problems and requirements. · Avoid redesign, or at least minimize it. · Expert designers reuse solutions that have worked for them in the past. · When they find a good solution, they use it again and again; consequently, you'll find recurring patterns of classes and communicating objects in many object-oriented systems. · These patterns solve specific desi...