私は、ベースコードベースに大きく依存するプロジェクトに取り組んでいます。ベースコードでは、(ここでは単純化)に定義されたインタフェースがあり、私たちのプロジェクトのためにeventWatcherGo:インタフェースのオプションメソッド
//Baselibrary.go:
package base
type eventHandle interface {
eventHookTypeA
eventHookTypeB
someOtherMethod() results
}
type eventHookTypeA interface {
// method definitions
HandleEventA() results
}
type eventHookTypeB interface {
// method definitions
HandleEventB() results
}
func handleEvents(eventType string, handle eventHandle) results {
if eventType == "eventA" {
return handle.HandleEventA()
} else if eventType == "eventB" {
return handle.HandleEventB()
}
return nil
}
と呼ばれる、我々は今、私たちのプロジェクトに排他的である3番目のイベントタイプ(例。eventTypeC)をhavee。 1つの方法は、基本クラスに第3のインタフェース定義(eventHookTypeC)を追加し、それに応じて独自のプロジェクトコードで実装することです。しかし、CI環境では、この新しいバージョンのBaselibrary.goを使用し、他のすべてのプロジェクトをビルドします。これは、eventHookTypeCのインプリメンテーションが不足しているために失敗します。
私たちのビルド環境やリポジトリを変更するのとは別に、他のプロジェクトのコードを変更することなく、これを回避する方法がありますか?