4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ちょっとずつ読むドメイン駆動設計 第三部 より深い洞察へ向かうリファクタリング 第十ニ章 デザインパターンをモデルに関係づける

Posted at

ここで、デザインパターンとは何かとかどんなパターンがあるかという話しは置いておいて・・・

デザインパターンをモデルに適用する

デザインパターンは、オブジェクト指向技術を技術的に使用する上で、さまざまなコンテキストで頻繁に直面する問題を解決してきたものです。なので、デザインパターンのカタログでは技術的な用語で紹介されています。

このデザインパターンをドメイン駆動設計で適用する上で注意する点は、パターンの考え方が本当にドメインの概念に合うかどうかというところです。
このことはこの章で何度も言われているところですね。

例では、ストラテジーパターンとコンポジットパターンが挙げられています。
ストラテジーパターンをドメイン駆動設計に当てはまる際には、

デザインパターンとしてのストラテジーに対する従来の見方は、さまざまなアルゴリズムを置き換える能力に焦点をあわせているが、ドメインパターンとして使う場合には、プロセスや、ポリシーのルールに代表されるような概念を表現する能力に焦点を合わせている。

デザインパターンとオブジェクト指向とドメイン駆動設計

オブジェクト指向技術と合わせて広まったデザインパターンですが、デザインパターンが理解できれば、エンジニアとしてレベルが上った、保守性の高いソースコードが書ける!というのはちょっと誤解がありそうです。

複雑なドメインに対して、ドメインの概念に合わせることを考えずに複雑なデザインパターンを適用すれば、結局ソースコードが複雑になるだけですよね。

やはり、ドメイン駆動設計を理解して、ドメインの概念に合った場合にのみ、デザインパターンを選択することが大事ですね。

それから、Gofのデザインパターンカタログを全て使えないとだめですか?という質問をときどき受けることがあるのですが(質問されるほどレベル高くないだろというツッコミは置いておいて・・・)、ドメインの概念にはなかなか合わないようなパターンもあるので、無理やり全部理解しようとするよりは、ドメイン駆動設計を理解しに行った上で、概念的に適用できるパターンはないかなとカタログをパラパラめくるような使い方をする方がいいかもしれませんと答えています。

実際、ドメイン駆動設計本でもフライウェイトパターンはドメインモデルにおいては、一致するものがないと言っています。(値オブジェクトに対して適用した例は5章で紹介されてますね。ただ、エンティティで使用できるものではないので、ドメインの概念と一致しているとは言い難いということです。)

インタプリタパターンも、今のところ例が思いつかないと言っていますね。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?