I summarize the lessons you’ve learned in this section. I also put into perspective the three main tasks of creating and using objects:
1. Identifying your objects based on the responsibilities they have to fulfill. Commonality and variability analysis prove extremely useful here.
2. Deciding how to use these objects. This is primarily about object relationships, which is what many of the patterns are about.
3. Deciding how to manage these objects. This is where factories come in.
I summarize the advantages of dividing your software development tasks into separate steps that deal with only one of these issues.