タグ

デザインパターンに関するsymmt9302のブックマーク (12)

  • MVVMのModelにまつわる誤解 - the sea of fertility

    こちらに移転してきて初めての記事です。 最近たまに話題になるので書いておきます。MVVMのModelについて誤解されやすい部分のお話です。最近よく議論してるasync/awaitの話とは関係がありません。なおこの話は以下のスライドを理解している事が前提となります。 共有したい理解(ゴール) ViewModelはModelの影 ModelについてViewModelが行うことは、イベントに対する反応と戻り値のないメソッドの呼び出ししかない事 これについての理解を共有できるよう説明していきます。 VIewModelはModelの影 スライドにもしつこく書きましたが、MV○(MVVMやMVC/MVP)のModelは大変分厚くなるし、アプリケーション間で使いまわすことなんてできません。ModelはUIを意識しない??いや、何度も言っていますが、意識はする必要があるんです。ただUI実装の知識が必要ない

    MVVMのModelにまつわる誤解 - the sea of fertility
  • 時計オブジェクト(ドメインクロック)を導入してテスト容易性と意図性を高める

    現在の時刻を扱うロジックがアプリケーションコードに含まれるのは珍しいことではありませんが、これらのロジックのテストは簡単ではありません。以下のコードを見てみましょう。 <?php ... class OrderService { ... public function order(Order $order) { $currentHour = (integer) (new \DateTime())->format('H'); if ($currentHour >= 10 && $currentHour < 21) { ... } else { throw new OrderException('ご注文は午前10時から午後9時まで!'); } } ... 実際の現在の時刻に依存せずにif文の条件をテストする1つの方法は、DataTimeオブジェクトの生成部分をメソッドとして抽出し、そのメソッド

    時計オブジェクト(ドメインクロック)を導入してテスト容易性と意図性を高める
  • 15.Facadeパターン

    15.1 Facadeパターンとは 第15章ではFacadeパターンを学びます。プログラムを作っていくと、最初は小さなものでも、だんだん大きくなっていきます。 たくさんのクラスが出来て、相互に関係しあい、複雑になっていきます。 クラスを使う場合には、それらの関係を正しく理解して、 正しい順番にメソッドを呼び出す必要があります。 大きなプログラムを使って処理を行う場合、 関係しあっているたくさんのクラスを適切に制御しなくてはいけません。 その処理を行うための「窓口」を用意しておくと、 個別にたくさんのクラスを制御しなくても、「窓口」に対して、要求するだけですみます。 Facadeパターンは、既存のクラスを複数組み合わせて使う手順を、「窓口」となるクラスを作ってシンプルに利用できるようにするパターンです。 ちなみに、facadeとはフランス語を語源とする単語で「建物の正面」という意味です。発音

  • How to make the perfect Singleton?

    Design Patterns are popular among software developers. A design pattern is a well described solution to a common software problem. The Singleton is one of the Creational Design Patterns in Java. What is the purpose of Singleton?The purpose of the Singleton class is to control object creation, limiting the number of objects to only one. The singleton…

    How to make the perfect Singleton?
  • デザインパターン「Factory Method」 - Qiita

    はじめに 投稿はJava言語で学ぶデザインパターン入門のデザインパターンをまとめた記事です。今回はFactory Methodパターンになります。 まとめ一覧はこちら Factory Methodパターン Factory Methodとは インスタンスの作り方をスーパークラスで定め、具体的な処理をサブクラスで行うパターンをFactory Methodパターンと呼びます。 オブジェクトの生成と具体的な処理を分離することで、より柔軟にオブジェクトを利用することができます。 Template Methodパターンをオブジェクト生成の場面に適応させたデザインパターンと言えますね。 簡単に言えば、オブジェクト生成を容易にするデザインパターンです。 FactoryパターンとFactory Methodパターン FactoryパターンとFactory Methodパターンでは以下の違いがあります Fa

    デザインパターン「Factory Method」 - Qiita
  • サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Factory/Factory Method(ファクトリ/ファクトリメソッド)

    イントロダクション オブジェクトを利用する側からすれば、使用する際にオブジェクトの詳細を意識したくはありませんよね。 たとえば、条件によってデータファイルの読み込みに使うオブジェクトが異なる場合、CSV形式であればCSVDataReaderオブジェクトを、XML形式であればXMLDataReaderオブジェクトを生成します。 通常はif、else、switchなどの条件分岐を使用して、条件ごとに生成するオブジェクトを変更します。 ここで新たなデータファイル形式への対応が必要になった場合は、新しいオブジェクト生成処理と、条件式を追加しなければいけません。 オブジェクトの使用者は、オブジェクトが使用できる状態で受け渡してもらい、オブジェクトは使うことだけに専念したいものです。 また、このようにオブジェクトの生成処理と使用処理が同じコードに書かれていた場合、オブジェクトの生成処理によってオブジェ

  • 最近の個人的なAndroidの設計とかテスト周りとかまとめ - もやもやエンジニア

    最近、Androidの設計やらテストの書き方やらを試行錯誤していて、ちょっと情報が散らばってきたので個人的なまとめです。これが絶対的にイケてる!とかじゃなくて単にいろんな人のスライド読んだり、自分で試したりして今こんな感じになったというレベルのものです。 コードは↓で作ったアプリをベースにいじってます。。Kotlin製のアプリなのでJavaに適時読み替えてください。 rei19.hatenablog.com 設計の話 設計の目標はモジュールの責務を分割して将来の変更に強くするという感じです。Androidの場合は特に適当に作るとActivityとFragmentが膨れ上がってメンテつらい作りになりがちです。で、去年に書いた記事(Androidのデザインパターンを考えてみたの続き。Kotlin対応版。 - もやもやエンジニア)とかを経て、いまのところはMVPな構成にしてModel層をDDDラ

    最近の個人的なAndroidの設計とかテスト周りとかまとめ - もやもやエンジニア
  • 【Android】Modelからの通知の実装方法における個人的な変遷まとめ - genonymous

    こんにちは。釘宮です。 AndroidにおいてModelからVC(View or Controller というか Acitivity or Fragment)に通知するときの方法が僕の中で変遷してきているなぁと思ったのでサンプルコードも書きつつ振り返ってみたいと思いました。 VCに全部書く プログラミングを初めて間もないころ、なにも気にせずにVCに全部書いていましたすいません。 MVCとかよくわかってなかったので赴くままに書いていたわけです。 VC側 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // たとえばonCreateから呼ばれるとこにガリガリかいていたわけです ArrayList<Event> events = new Array

    【Android】Modelからの通知の実装方法における個人的な変遷まとめ - genonymous
  • The Twelve-Factor App (日本語訳)

    はじめに 現代では、ソフトウェアは一般にサービスとして提供され、Webアプリケーション や Software as a Service と呼ばれる。Twelve-Factor Appは、次のようなSoftware as a Serviceを作り上げるための方法論である。 セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する。 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。 モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。 開発環境と番環境の 差異を最小限 にし、アジリティを最大化する 継続的デプロイ を可能にする。 ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく スケールアップ できる。 Twelve-F

  • "The Reactive Manifesto v2.0" 日本語訳 - Okapies' Archive

    はじめに いつの間にか "The Reactive Manifesto" のバージョンが上がって v2.0 になっていたので、さっくりと翻訳。従前よりかなりコンパクトになっている。マニフェストに署名したい方は、公式サイトの一番下の "Sign the manifesto" をクリックしてください。 v1.0 の日語訳は id:kimito_k さんがこちらで公開されています。 追記【2015/03/16】: 公式サイトに掲載されました。 追記【2014/12/27】: 公式へ Pull Request してマージしてもらいました。最新版は以下をご覧ください。 リアクティブ宣言 用語集 @okapies That is awesome. Thanks. It would be great if you wanted to create a Pull Request to add it to

  • ドメイン駆動設計 基本を理解する

    2. 日の内容 • ドメイン駆動設計の「考え方」 • 「まえがき」を中心に – オブジェクト指向、エクストリームプログラミング • ドメイン駆動設計の「3つの原則」 • 1章 2章 3章から – ドメイン知識の習得、言葉による意図伝達、コードで表現 • ドメイン駆動設計の「基スキル」 • 4章 5章 6章 7章から – ドメイン層の隔離、ドメインオブジェクトの設計、総合演習 2 ※「基スキル」は、時間が足りなくなる見込み。あらかじめご了承ください。

    ドメイン駆動設計 基本を理解する
  • AndroidStudioの標準デザインパターンで分かるFragment入門 - Qiita

    はじめに(この記事はもう内容が古いので注意してくださいね) Androidアプリの制作において、押さえておけばもしかしたら幸せになれるポイントがFragmentだと思います。 2年ぶりにAndroidネィティブに関わってAndroidStudioを使い初めて2ヶ月ですが、標準のジェネレーターでつくれる標準のデザインパターンからFragmentの使い方に慣れるためのチュートリアルを作ってみました。 以下、いいわけ 基的に画面はFragment単位で設計するように癖をつけるとデザインの変更に強く、他のアプリを作るときにも使い回しがしやすい実装になりやすいです。 Android Studioが自動作成するデザインモデルのテンプレートもFragmentで構成されている場合が多いので、Fragmentに慣れているだけでかなり心理的に楽になれます。 Androidの入門書の入り口くらいは見たけどFr

    AndroidStudioの標準デザインパターンで分かるFragment入門 - Qiita
  • 1