1、共性和可变性分析:
①找到变化的地点,称为共性分析;然后找出如何变化,称为变性分析。
②可变性只有在给了共性之后才有意义,也就是说,在找到共性之后,有助于进行可变性分析。
③共性的概念可以用抽象类、接口表示,可变性分析所发现的变化可以通过具体类实现。
2、考虑变化的设计
①面向接口进行编程,而不是面向实现的。
②优先使用对象组合(聚合),而不是类继承,对象组合(聚合)能够适配调用的相应类及子类。
③对变化的概念进行封装,使发生变化时,不引起重复设计。
④考虑变化设计造成的短期开销是值得的,而且考虑到代码可读性、可测试性、可维护性等等因素,相对于直接编码,并不会造成额外的开销,还可能节省开销。
3、设计模式解决方案很好,但不总是完美
①通过使用设计模式,在未来发生变化时,设计模式能够很明确的给使用者处理解决问题的方法。
②设计模式能够让使用者进行更抽象和更通用的思考,而且变化时是否采用通用的解决方案来实现,设计模式并不强制要求。
③设计模式并不总能提供十全十美的解决方案,但是设计模式是众多设计人员多年的结晶,所以它们通常优于自己有限的时间所能提出的解决方案。