What is a good architecture / design pattern for giving multiple shared attributes in different combinations?
I have a need for many different objects to have various combinations of attributes. For a demonstrative example, a flaming dog would have a dog attribute, a flame attribute, and a tail attribute, while a water cat will share the exact same tail attribute but have its own water and cat attributes, which it also shares with others, etc. Each attribute has complex behaviors and completely unique methods that I would want to store in a class for each, and there will be many different combinations of these for each of the various objects.