プログラミング

プログラミング

Angularのfactoryクラスを使ってseriviceに移行する利点【プログラマーは理解しておきたい】

107 views

Angularにおけるserviceとfactoryの違いについてはよく理解されていますが、個人的には必要なコードが少ないfactoryを選ぶようにしていました。しかしそれ以降、一般の開発者に選ばれるようになったのはserviceの方でした。

 

 

クラスを有効に使いたい時にはserviceが適しています。それはAngularにおいてはクラスが自然にマッピングされるからです。例を見てみましょう。下のコードはES6ではないUsersStoreです。

 

 

これをES6のクラスに変換すると次のようになります。

 

 

レジストレーションの行はこのように変更されます。

 

 

UserStoreを注入する既存のコードの振る舞いは同じであるため、スムーズに移行することができます。

 

 

ここで覚えておきたいのは、注入の行われ方です。

$httpがクラスのconstructorに提供されるようになっています。たとえばgetAllメソッドにおいて注入されたサービスに後からアクセスするには、メンバーとして保存しなければなりません。その後で、変換されたgetAll関数がthis.$httpとして参照されることを確かめる必要があります。

 

 

コンストラクタ周りでより多くのコードを入力しなければならないのは面倒で、一部の人たちは敬遠することでしょう。しかし長所に目を向けることも不可能ではありません。重大な責任を負う最高のコントローラーとサービスを書き上げるのがもっと苦痛になるはずです…。

 

 

 

※本記事は、Moving Angular Factories to Services With Classesを翻訳・再構成したものです。

関連記事

おすすめ記事