2011-02-14

Refactoring 341 - Extract Interface

Bad smell:
  • Large class
使用時機:
  • 某些 client 只會用到同一個 class 的部份 interface api 時。
  • 或者,多個 class 長得有點像,碰巧有 client 只會用到相似的這部份。
方法:
  • 抽出部份 api 成新的 interface。
限制:
  • 只是抽出共同的介面,並無法像 Extract Superclass 那樣消除重複的 code;可以用 Extract Class 抽出重複的 code 到一個 component class 裡,然後 delegate 過去來消除重複的 code。


當一個 class 擁有多個不同角色時,可以不用的 interface 表示不同的角色。

如果有大量重複的 code,Extract Superclass 也許是個好方法,但是 Java 只能有一個 super class 是個麻煩。

沒有留言:

張貼留言