Design patterns describe good solutions to common and recurring problems. The applications of design patterns may vary in different layouts, which pose challenges for recovering and changing these design pattern instances since essential characteristics of each design pattern are described implicitly. In this paper, we categorize different characteristics of each design pattern as its traits in form of predicates. We classify different predicates into groups and levels. In this way, the significant characteristics of each design pattern are explicitly specified in predicates that can be used for design pattern recovery and evolution analysis.