sec design patterns data type adttype operations data itemslogical form data structurestorage space data itemsphysical form subroutines figure the relationship between data itemsabstract data typesand data structures the adt defines the logical form of the data type the data structure implements the physical form of the data type designers learn and reuse various techniques for combining software components such techniques are sometimes referred to as design patterns design pattern embodies and generalizes important design concepts for recurring problem primary goal of design patterns is to quickly transfer the knowledge gained by expert designers to newer programmers another goal is to allow for efficient communication between programmers its much easier to discuss design issue when you share vocabulary relevant to the topic specific design patterns emerge from the discovery that particular design problem appears repeatedly in many contexts they are meant to solve real problems design patterns are bit like genericsthey describe the structure for design solutionwith the details filled in for any given problem design patterns are bit like data structureseach one provides costs and benefitswhich implies that tradeoffs are possible thereforea given design pattern might have variations on its application to match the various tradeoffs inherent in given situation the rest of this section introduces few simple design patterns that are used later in the book flyweight the flyweight design pattern is meant to solve the following problem you have an application with many objects some of these objects are identical in the information that they containand the role that they play but they must be reached from various placesand conceptually they really are distinct objects because so much information is sharedwe would like to take advantage of the opportunity to reduce memory cost by sharing space an example comes from representing the