《Design Patterns》書內所有方案的組織都圍繞“程序進化時會發生什麼變化”這個問題展開。對於任何設計來說,這都可能是最重要的一個問題。若根據對這個問題的回答來構造自己的系統,就可以得到兩個方面的結果:系統不僅更易維護(而且更廉價),而且能產生一些能夠重復使用的對象,進而使其他相關系統的構造也變得更廉價。這正是面向對象程序設計的優勢所在,但這一優勢並不是自動體現出來的。它要求對我們對需要解決的問題有全面而且深入的理解。在這一節中,我們准備在系統的逐步改進過程中向大家展示如何做到這一點。
就目前這個回收系統來說,對“什麼會變化”這個問題的回答是非常普通的:更多的類型會加入系統。因此,設計的目標就是盡可能簡化這種類型的添加。在回收程序中,我們准備把涉及特定類型信息的所有地方都封裝起來。這樣一來(如果沒有別的原因),所有變化對那些封裝來說都是在本地進行的。這種處理方式也使代碼剩余的部分顯得特別清爽。