2016-09-06 7 views
0

コードをリファクタリングしているので、あるクラス(TestImplと呼ぶ)のメソッド(myMethodと呼ぶ)をprivateからpublicに作成する必要があります。したがって、このメソッドをそのインターフェイス(ITest)に追加しようとします。インプリメンテーションの内部クラスを参照するインタフェース

しかし、問題は、メソッドのパラメータが内部クラスTestImplを参照していることです。つまり、次のようなものです:

myMethod (TestImpl.NewType var1, ...) 

これは、インターフェイスが独自の実装を参照するため、少し奇妙なようです。ここで最善の解決策は何ですか?それとも本当に問題なの?

+0

'NewType'は' TestImpl'のプライベートメンバーにアクセスする必要がありますか? 'NewType'は' TestImpl'だけで使用できますか? – acm

答えて

2

私はそれが静的なクラスであると理解しているので、それは問題ではありません。しかし、私はそれがNewTypeTestImplの外に、あるいはそれは、DIの原則に違反し、このNewType

0

を一般化する新しいインターフェイスを作成することを移動するために、より良いことだと思う、インタフェースはいやその実装に依存関係をコンパイルする必要はありません。 NewTypeは、外部へのインタフェースまたはクラスとして抽出する必要があります。

関連する問題