设计原则: 封装变化,变化的部分封装起来,以后只改这部分。找出程序中会变化的方面,然后将其和固定不变的方面相分离。针对接口编程,不针对实现编程。多用组合,少用继承。依赖抽象,不要依赖具体类 详细理解示例,待展开,参考《head first 设计模式》