假設我有兩個不同的類需要列印不同的東西:

OrderManager 想要列印訂單歷史,而 MenuManager 想要列印選單。由于兩者都想做類似的功能(但實際實作不同),是否建議使用這樣的介面?問題是與“printOrderHistory”相比,“print”函式的定義不是很好且不言自明,我只能使用介面中定義的確切名稱來實作該方法。
有解決方法還是我錯誤地使用了介面概念?事實上,似乎沒有什么能阻止我為每個沒有介面的類定義自己的列印函式......
uj5u.com熱心網友回復:
這就是介面的目的!它定義了一組操作,任何實作這個介面的類都需要實作這些操作。這允許然后參考一個Printable物件并呼叫print(),知道它將執行與該物件相關的操作。
因此,您的 UML 圖是模棱兩可的:正如OrderManager實作(在 java 中,“實作”)Printable它應該有自己的print(). 在 UML 和 Java 中有三種解決方案:
按照您的圖表承諾,遵守界面,并重命名
printOrderHistory()為print(). 如果只有一種有意義的方式來列印和訂購管理器,并且沒有其他限制,那么這是有道理的。添加一個
print()操作(在 java 中,“方法”)到OrderManager(),它只是將呼叫轉發到printOrderHistory(). 但這看起來過于復雜。僅當訂單管理器真的可以列印,并且print()添加一些相關功能(例如根據某些因素選擇正確的列印功能)時,它才是合理的。使用

uj5u.com熱心網友回復:
介面的想法是有一個合同來完成。這意味著,您必須在構建實作??時使用介面中定義的方法名稱和引數。
根據我個人的經驗,在不相似的類上強制使用介面總是一個壞主意,因為它們確實有不同的目的。雖然您可以在這兩個類中使用 print(),但只有當它們在您的代碼中可交換時才有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411687.html標籤:
