AddisonWesley-DesignPatterns-ElementsofReusableObject-OrientedSoftware