タグ

設計とDIに関するs_ryuukiのブックマーク (6)

  • DIP(依存性逆転の原則)を守っていない話

    一昨日くらいに 「DIP してもどうせ辛くなるよね」的なことを適当にツイートしたら引用 RT や RT 後言及やエアリプで言及された上に「こいつは設計を何も理解しとらん」みたいなことを言われた。「俺は当に何も理解していないのか?」と不安になったので、自分の考えをちゃんと書いておこうと思った。先に自分の立場を言うと、なんたらアーキテクチャとか SOLID 原則は有用だし自分も使うが、それを厳守しようとは思っていないと言う立場だ。 DIP とはなんだったか DIP(依存性逆転の原則)は SOLID 原則の一つで、一言で言うと「抽象に依存させると依存関係が逆転する」といったものだ。何のことやらという風になるので例だけ挙げると、UserRepository と UserService があってこのように定義すると class UserRepository { get() { return dat

    DIP(依存性逆転の原則)を守っていない話
  • 依存関係逆転の原則の重要性について

    こんにちは!eurekaのAPIチームでエンジニアをやっているrikiiです。 最近ついにAPIチームでモブプロを始めました。前は設計や実装について一人で悩んでたりした部分が、すぐ議論できたりホワイトボードに図で書いて理解を深めたりして、問題が素早く解決できてすごくいい感じで進んでいます。 さて、今回も前回の続きでSOLID原則の1つのDIP(依存関係逆転の原則)について書こうと思います。 eurekaではgo言語を使っているので、goを使ったコード例とともに説明していきたいと思います。 ちなみに依存関係逆転の原則とはSOLID原則と呼ばれるオブジェクト指向設計原則のうちのひとつです。 SOLID原則とは?下記5つの原則の頭文字を取ってまとめた、オブジェクト指向設計原則のことです。 ・S : The Single Responsibility Principle(単一責任の原則) ・O :

    依存関係逆転の原則の重要性について
  • Inversion of Control コンテナと Dependency Injection パターン

    以下の文章は、Martin Fowler の「Inversion of Control Containers and the Dependency Injection pattern」を、かくたにが翻訳したものです。原著者の許可を得て翻訳・公開しています。 翻訳にあたっては、kdmsnr さんにご協力をいただきました。ありがとうございます。公開後の改訂履歴を記事の最後に記述しています。 Java コミュニティでは軽量コンテナが花盛りである。 軽量コンテナは、異なるプロジェクトのコンポーネントをひとまとまりのアプリケーションとして組み立てることを支援する。 このようなコンテナの根底には、コンポーネントの結び付け方についての共通したパターンがある。 そのパターンのコンセプトは「Inversion of Control(制御の反転)」と、まことに包括的な名前で呼ばれている。 記事では、このパタ

    s_ryuuki
    s_ryuuki 2021/01/21
    Service Locator 対 Dependency Injection
  • MV(R)Pの設計とZenjectは相性がいい!MV(R)PでZenject完全理解! - Qiita

    こんな経験ありませんか? [SerializeField]~View; [SerializeField]~Model; そして起こる無限のNullReferenceException... 今回はこれを解決するように組んでいきます 例えば おそらくZenject未使用でMVP(UniRx)ありで組もうとするとこんな感じになると思います。 using System; using UniRx; using UnityEngine; public class HPModel : MonoBehaviour { [SerializeField]float hp = 100f; Subject<float> hPChanged = new Subject<float>(); public IObservable<float> HPChanged => hPChanged; private void

    MV(R)Pの設計とZenjectは相性がいい!MV(R)PでZenject完全理解! - Qiita
  • Zenjectを導入する際に考えておくこと - Qiita

    Zenjectというよりは、DIコンテナを使用する設計パターンを導入する時に検討しなければならないこと全般に当てはまるかと思います。実際にプロジェクトでZenjectを使用し、盛大にアンチパターンを踏んでいたのでその戒めを込めて。 Zenjectとは Unityでの使用に特化したDIコンテナです https://github.com/svermeulen/Zenject DI/DIコンテナって何? 自分が説明するよりググったほうが有益な情報が多いです。 https://ja.wikipedia.org/wiki/依存性の注入 DI・DIコンテナ、ちゃんと理解出来てる・・? DIコンテナを使うと何が良いの? まず、DI/DIコンテナを使うメリットについては山程記事があるので、調べてみましょう。 一つのメリットとしては、SOLIDの原則の一つでDの部分、 DIP:The Dependency

    Zenjectを導入する際に考えておくこと - Qiita
  • Unity開発で使える設計の話+Zenjectの紹介

    4. おしながき • 設計とは – 設計とは何か、設計の何がよいのか – モデリングとクラス設計 • 覚えておくべき基礎知識 – クラス図の読み方 – SOLID原則 – デザインパターン • Zenjectの紹介 – 依存性注入とは何か • まとめ

    Unity開発で使える設計の話+Zenjectの紹介
  • 1