- 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 是個麻煩。
沒有留言:
張貼留言