考虑设计中什么应该是可变的。这种方法与关注引起重新设计的原因刚好相反。它不是考虑什么会迫使设计发生改变,而是考虑什么能够在不引起重新设计的前提下改变。这时主要关注的就是对变化的概念进行封装,这时许多设计模式的主题。
如何在问题领域中找到不同变化,如何找到不同领域中的共同点。找到变化的地点,称为“共性分析”,找出如何变化,称为“变性分析”。
共性分析就是寻找一些共同的要素,它们能够帮助我们理解系列成员的共同之处在哪里。可变分析揭示了系列成员之间的不同,可变性只有在给定了共性之后才有意义。
共性分析寻找的是不可能随时间而改变的结构,而可变分析则要找到可能变化的结构。可变性分析只在相关联的共性分析定义的上下文中才有意义。从架构的视角来看,共性分析为架构提供长效的要素,而可变分析则促进他适应实际使用所需。也就是说,如果变化是问题领域中各个特定的具体情况,共性就定义了问题领域中将这些情况联系起来的概念。共通的概念将用抽象类表示。可变性分析所发现的变化将通过具体类(也就是从抽象类派生而来的具有特定实现的类)实现。