假設您爲某個庫設計了一個API。類型分離(API設計)
您想在API中公開某些數據類型(例如Person
)(例如getAllPeople()
)。
考慮以下目標:
- 可以很容易地添加成員
Person
(可擴展) - 不引入庫的客戶端之間的依賴關係,以及實現(耦合)
Person
可能包括一點意思都沒有圖書館
的客戶端內部狀態信息如何Y就應該你去了嗎?
- 在庫頭/ API包中定義
Person
;使庫的客戶端和實現都依賴於它(高耦合;非常容易擴展) - 在API /頭中定義
Person
;在您的庫實現中定義PersonModel extends Person
(易於擴展;仍有一些耦合) - 定義
PersonModel
in impl .;在API中定義Person extends PersonModel
(可怕的依賴關係) - 在impl中定義
PersonModel
;在API中定義Person
並在需要時複製內容(難以擴展;無耦合) - 其他任何東西?
一個很好的API我加了一個約束細化的問題 – benzaita
謝謝你的詳細解答。我想知道我是否過度簡化了這個問題,因爲我覺得我還沒有解決方案。如果'Person'對象必須是可序列化的,那麼它可以用於RPC?然後客戶_must_有一個具體的類定義'人' – benzaita
(+1)第一段總結了答案;-) – umlcat