2016-10-01 7 views
1

私のScalaアプリケーション(アッカサービス)上のセッターはPersonBuilderクラスScalaは:シングルトンオブジェクト

このPersonBuilderクラスがエンティティを構築する前に、いくつかのデータを取得するRESTクライアントを持っています。

このPersonBuilderの1つのインスタンスは、いつでも一度に使用してください。

明らかに私はここでPersonBuilderオブジェクトを使用することができましたが、単体テストを実行しているときにモックRESTクライアントに渡したいという問題があります。

オブジェクトのセッターを呼び出しているのは、Scalaで悪い習慣とみなされていますか? 完了した場合は安全にとなることが保証されています。

もちろん、カプセル化されたRESTクライアントでクラスを作成することもできますが、この問題は、依存性注入フレームワークが存在しない場合にこのPersonBuilderクラスをすべてコードに渡すことになります。

現時点でScalaにはこれに関する慣習がありますか?

答えて

3
class PersonBuilder(rest: Rest) 
object PersonBuilder extends PersonBuilder(LiveRest) 
object TestPersonBuilder extends PersonBuilder(MockRest) 

コンストラクタの引数を必要としない場合は、特性を使用します。

trait PersonBuilder { 
    def rest: Rest 
} 
object PersonBuilder extends PersonBuilder { 
    override val rest = LiveRest 
} 
+0

非常に興味深いアプローチ、私はあなたがオブジェクトのセッターのアプローチにお考えが何であるか興味のあるところ – DJ180

+0

ことを行うことができます知りませんでしたか? – DJ180

+1

@ DJ180セッターを使用した場合は、コードの臭いが指や袖にかからないように手をよく洗って、水ですすぎ、キーボードに戻って上記のいずれかのパターンに置き換えてください。 :) – flavian

関連する問題