Please enable JavaScript.
Coggle requires JavaScript to display documents.
Domain Model And Object Paradigm - Coggle Diagram
Domain Model And Object Paradigm
掌握OOP設計的精神
抽象
職責
擁有的知識
具備的能力
與其他物件協作的能力
自治
自我屢行
對象利用自己的數據和行為完成任務不需要假手他人(又稱信息專家模式 GRASP - information expert)
Martin Fowler -> Feature Envy -> 違背信息專家模式 某method總是用其他類的數據和method.
穩定空間
高內聚 低耦合
職責分明的體現
穩定空間 及抵禦 外來物件的侵擾的能力
將不變的部分留下 可變的部分分離出去抽象成一個街口 再以委派的形式船回到原對象,此時抽象出來的街口可以用策略模式或者命令模式 or 模板模式來體驗
最小完備
職責單一 and 不處理不屬於自己職責以外的事情
處理信息的行為優先分配給擁有此信息的對象
雙生的行為動詞不該分離 例如 open & close , add & remove
獨立進化
穩定空間和獨立進化,本身是開放封閉原則的兩面
對外開放 -> 外部發生修改時,自治對象不受變化的影響 這部分我們可以利用抽象(不管是利用interface or abstract class) 來處理。 對內不管怎麼修改,條用者都不會被影響到。
合理的封裝是在自治對象上的一層保護膜
對外公開的接口是自治對象與外部世界的協作唯一橋樑
要做到獨立進化 必須保證自治對象的interface的穩定性
避免對公開方法的參數和返回值做修改
ex: public interface ftpconnector { void connect(String ftpHost... } 如果要額外增加一個參數就讓這個interface不穩定了
EnumSet的exmaples
數據結構和類型也是需要合理的封裝 客戶端不需要擔心也不需要知道
https://www.notion.so/rayhsieh0421/051-4dc171f4348c42ae85e3990cb292726e