1.降低复杂度
2.引入中间的、易懂的抽象
3.避免代码重复
4.支持子类化
5.隐藏顺序
6.隐藏指针操作
7.提高可移植性
8.简化复杂的逻辑判断
9.改善性能
10.隔离复杂度
11.隐藏实现细节
12.限制变化所带来的影响
13.隐藏全局数据
14.形成中央控制点
15.促成可重用的代码
16.达到特定的重构目的