[英]In Java, what do you call this pattern/idiom?
我的Java 庫提供了一個接口SomethingClient
和一個實現類SomethingClientImpl
。 如您所料,該接口包含由應用程序調用的方法。
但是有一個“鏡像”接口SomethingHandler
,其中包含應用程序提供的方法 - 應用程序回調。 你能想象的應用程序提供圖書館,此接口的對象-也許到工廠方法從SomethingClient
被得到。
作為一個沒有經驗的 Java 設計師,我很想知道是否有一個名稱,以及是否/在多大程度上推薦,還提供一個結合了這兩個概念的接口和類:
public interface SomethingClient { /*..*/ }
public interface SomethingHandler { /*..*/ }
public interface ClientAndHandler extends SomethingClient,
SomethingHandler { }
public abstract class ClientAndHandler_Impl implements ClientAndHandler {
final SomethingClient clientImpl_;
ClientAndHandler_Impl(SomethingClient clientImpl) {
this.clientImpl_ = clientImpl;
}
// TODO now all SomethingClient methods are implemented in terms of clientImpl_
// AND, SomethingHandler methods are left abstract so they are implemented by the application
}
其目的是,應用程序編寫者可能更喜歡從ClientAndHandler_Impl
抽象類擴展並實現回調方法,也許就客戶端(傳出)方法而言。 這可以相對容易地完成。 假設您會這樣做,您會給ClientAndHandler
概念取什么名字?
您當前的代碼看起來有點像骨架實現。 您可以在麻省理工學院或dzon上閱讀更多相關信息。
它背后的想法是為客戶端提供默認實現。 您可以在 Java-Collections-API 中找到一些示例,例如AbstractCollection
、 AbstractSet
和AbstractMap
。
ClientAndHandler
接口是多余的。 ClientAndHandler_Impl
類應該實現SomethingClient
和SomethingHandler
。
如果您想明確說明您使用的是骨架實現,我會將抽象類ClientAndHandler_Impl
命名為AbstractClientInteraction
或ClientInteractionSkeleton
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.