# Teddy refactoring-CA 1.設計有兩種方式 >由下至上 >由上至下 2. 重構是 >由下至上 >在家裡打掃乾淨,整個台北市依然是中華民國美學 4. 課程目的 > 重構為 CA 有什麼流程 > CA 的重點是什麼 > Pattern-based 解決問題的方式 5. 身上有thread的物件叫Active Object 6. Characterization Test / Golden Master Test > 不斷的測試 out put 捕捉系統的行為 商業邏輯有兩種 7. Entities 邏輯 > 存款不能為負, 所有邏輯都要Follow 這一層 > 可以從這一層看到系統『是什麼』 > what the system is 9. Use Case 邏輯 > 借貸可以為負, 個別應用調整 > 可以從這一層看到系統『做什麼』 > what the system does 10. 壞味道 ``` public final class TaskList implements Runnable { Map<String, List<Task>> map; ... } ``` 基本型別,看不出業務 可以拉出座艙升等為『物件』 ``` public class Task { Map<String, List<Task>> map; } ``` 接著是 String, 這個 String 其實是 Project Name 可以繼續用 VO 包裝改為下方: ``` public class Task { Map<ProjectName, List<Task>> map; } ``` 接著下一步把 Map改成 toDoList ``` ``` 一個代辦清單TODOLIST可以有很多專案PROJECT 每個代辦專案PROJECT中可以有很多個工作TASK 經過分析 Domain Model 逐漸成形  畫Aggregate  Aggrugate Root -> ToDoList 1. 先把基本型別變成物件 2. 再把私有方法變成Class 3. 把不是entity的拿到usecase 4. 開始在usecase內區分command, query --usecase, (command) addProject, addTask  1. 呼叫repository 向 aggrugate 用id取到 物件 2. 改變狀態 3. 存檔 4. 回傳 狀態 (Success/Failed)  每個 input 都很像  
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up