&雪扇 More about Pattern UNIVE 16 Patterns of Patterns Anti-pattern J2EE patterns Institute of Computer Software 2022-2-27 Nanjing University
More about Pattern Patterns of Patterns Anti-pattern J2EE patterns 2022-2-27 Institute of Computer Software Nanjing University 16
&扇 Anti-Patterns 1902 17 Andrew Koenig 1995,Michael Akroyd 1996 口An anti-.pattern(反面模式)tells you how to go from a problem to a BAD solution. aTell you why a bad solution is attractive. Tell you why that solution in the long term is bad. Suggest other patterns that are applicable which may provide good solutions. Wiki Institute of Computer Software 2022-2-27 Nanjing University
Anti-Patterns Andrew Koenig 1995, Michael Akroyd 1996 An anti-pattern (反面模式) tells you how to go from a problem to a BAD solution. Tell you why a bad solution is attractive. Tell you why that solution in the long term is bad. Suggest other patterns that are applicable which may provide good solutions. 2022-2-27 Institute of Computer Software Nanjing University 17 Wiki
&扇 反面模式分类 102 18 组织结构的反面模式 口项目管理的反面模式 Anemic Domain Model 口团队管理的反面模式 BaseBean Call super 口分析方式的反面模式 Circle-ellipse problem 一般设计上的反模式 Empty subclass failure God object 口面向对象设计的反面模式 Object cesspool Object orgy 口编程上的反模式 Poltergeists Sequential coupling 口方法学上的反面模式 Singletonities Yet another fucking layer 口测试反面模式 Yo-yo problem ▣ 配置管理反面模式 Institute of Computer Software 2022-2-27 Nanjing University
反面模式分类 组织结构的反面模式 项目管理的反面模式 团队管理的反面模式 分析方式的反面模式 一般设计上的反模式 面向对象设计的反面模式 编程上的反模式 方法学上的反面模式 测试反面模式 配置管理反面模式 2022-2-27 Institute of Computer Software Nanjing University 18 Anemic Domain Model BaseBean Call super Circle-ellipse problem Empty subclass failure God object Object cesspool Object orgy Poltergeists Sequential coupling Singletonities Yet another fucking layer Yo-yo problem
Example 19 ▣胖球反模式 口 通过描述一个或几个类不断的膨胀,以至吞食掉整个面向对 象架构。一般胖球的出现是由于一个类垄断了处理过程,而 其他的类只是数据的封装体。 口症状和后果 ■单个类拥有大量的属性或操作。 ■单个类中封装了异类的、不相关的属性和操作集。 ■单个控制器类和几个简单的数据对象联系在一起。 ■缺乏面向对象的设计,一个控制器类几乎封装了所有的应用 功能。 ■控制器类通常过于复杂,无法复用和测试。 ■把这么个大类加载如内存中的代价可能会很高。 口胖球反模式有两种形式:行为形式和数据形式。 Institute of Computer Software 2022-2-27 Nanjing University
Example 胖球反模式 通过描述一个或几个类不断的膨胀,以至吞食掉整个面向对 象架构。一般胖球的出现是由于一个类垄断了处理过程,而 其他的类只是数据的封装体。 症状和后果 单个类拥有大量的属性或操作。 单个类中封装了异类的、不相关的属性和操作集。 单个控制器类和几个简单的数据对象联系在一起。 缺乏面向对象的设计,一个控制器类几乎封装了所有的应用 功能。 控制器类通常过于复杂,无法复用和测试。 把这么个大类加载如内存中的代价可能会很高。 胖球反模式有两种形式:行为形式和数据形式。 2022-2-27 Institute of Computer Software Nanjing University 19
Example 1902 20 口如何重构(Refactor)) 口把一些行为重新分配到某些封装了数据的对象上,并对 对象之间的关系重新调整 0 ■确定代表契约的关系操作和属性集合,也就是把相关的属性和 方法归类。 ■寻找这些根据契约的到了集合的“自然的家”,并把它们迁移 过去。 ■移除所有的“远耦合”或者说冗余的、间接的联系。 ■最后,移除所有的瞬时联系。 口总之,把一个控制器类变成了一个协调器类,让开始的 数据类扩充一些处理逻辑,数据类在协调类的指导下进 行操作,这也只是职责的迁移。 Institute of Computer Software 2022-2-27 Nanjing University
Example 如何重构 (Refactor) 把一些行为重新分配到某些封装了数据的对象上,并对 对象之间的关系重新调整。 确定代表契约的关系操作和属性集合,也就是把相关的属性和 方法归类。 寻找这些根据契约的到了集合的“自然的家” ,并把它们迁移 过去。 移除所有的“远耦合”或者说冗余的、间接的联系。 最后,移除所有的瞬时联系。 总之,把一个控制器类变成了一个协调器类,让开始的 数据类扩充一些处理逻辑,数据类在协调类的指导下进 行操作,这也只是职责的迁移。 2022-2-27 Institute of Computer Software Nanjing University 20