タグ

ScalaとDCIに関するatm_09_tdのブックマーク (3)

  • ScalaでのDCIの実装を考える - じゅんいち☆かとうの技術日誌

    みなさん、こんばんわ。 会社のアドベントカレンダーで、Scalaコードでわかった気になるDDDというブログを書いたのですが、最近、老害を防ぐためにDCIについても勉強中です。 DCIアーキテクチャ – Trygve Reenskaug and James O. Coplien とりあえず、これを読めということらしいですが、今ひとつ理解できなかったので、 Lean Architecture: for Agile Software Development を買って読んでます(巻末にScalaのコード例もあってなかなかよさげです)。 このではtraitのmix-in方式を紹介しているのですが、この方法はイマイチだと思っているので、別の方法を考えてみたのでさくっと紹介します。 暗黙的型変換と型クラスでの実装 今回は、ECサイトなどの、商品(Product)の購入(purchase)について考えて

  • DCIによるWebアプリケーション - 3:Cassandra - Digital Romanticism

    Cassandraを使用して割り勘アプリケーションの永続化レイヤを実装する。 導入 割り勘アプリケーション実装の第2部では、WebフレームワークとしてWicketを使用し、傾斜つきの割り勘計算がとりあえず行える所までを実装しました。しかし、データはメモリ上で保持しているだけで、永続化レイヤの実装は課題となっていました。そこで今回はCassandraを使用して永続化レイヤを実装していきます。 バックナンバー DCIアーキテクチャによるWebアプリケーションの実装:ドメインレイヤ DCIによるWebアプリケーション - 2:アーキテクチャ 永続化レイヤの実装 前回使用したアーキテクチャの概要図を再掲します。 ここまでDIコンテナの使用は意図的に避けてきましたが、外部リソースへのアクセスが必要になった所で使うことにします(Guice-2.0)。DIコンテナを使う場合、オブジェクトのウィービングを

    DCIによるWebアプリケーション - 3:Cassandra - Digital Romanticism
  • ScalaによるDCIアーキテクチャ:ローンシンジケート再考 - Digital Romanticism

    GroovyによるDCIアーキテクチャのサンプル実装で明らかになった2つの問題点をScalaによって解決する。 導入 前回のエントリでは、DCIアーキテクチャの構想に従った実装を示しつつ、言語的な制約から来る問題点を2つ提示しました。以下に再掲します。 ミックスインしたロールクラスにキャストすることができないため、ロールクラスを使用する際に型の安全性が確保されていない。追記:asTypeを使用することで、ミックスインしたクラスへのキャストが可能です。uehaj様より指摘を頂きました。(2010/06/04) ロールクラスが定められたふるまいを実行するためにはデータ構造についての知識が必要だが、それを静的に保証することができていない。 これらはいずれも型の安全性に関する問題で、アーキテクチャの問題というよりは言語仕様の問題です。そこで今回はScalaを使用し、これらの問題をトレイトと抽象メン

    ScalaによるDCIアーキテクチャ:ローンシンジケート再考 - Digital Romanticism
  • 1