skillup

技術ブログ

プログラミング全般

オブジェクト指向 アプリケーション層に関して

投稿日:

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。

本日は主にアプリケーション層(以下AP層)。MVCモデルでいうところのコントローラーに近い?)の考え方について。

AP層

要点

  • AP層はサービスクラスなどと呼ばれるが、完全に合致するものではない様子。
  • AP層(サービスクラス)は進行役であり、業務ロジック自体はかかない→ここに業務ロジックを書くとすぐに肥大化してしまうため。
  • 業務ロジックはサービスクラスに書かずにドメインオブジェクトに任せる
  • 1つのドメインオブジェクトが複数のAP層から利用されているのが正しい使われ方である
  • AP層(サービスクラス)、プレゼンテーション層、データベース層をそれぞれ独立させる
  • 業務ロジックをAP層に集中させない
  • 登録と参照のロジックを分離する
  • リポジトリはデータベースとサービスクラスの橋渡し的な役割。基本的にこのリポジトリを利用して業務データの記録や参照などを行う。
  • ただしリポジトリで行うものはデータベース操作ではなく、業務の関心ごととして記述するためのもの
  • サービス層にデータベース操作の詳細を意識させない(隠す)工夫
  • 画面の多様な要求は小さく分けて整理する

感想

いままでは業務ロジックのほとんどをいわゆるコントローラに書いてました。というかそういうものだと思ってました。基本的には(MVC+Util)みたいな感じで使っていたので・・・。ドメインオブジェクトを設計するとドメインにあたるもの(リポジトリ)に処理を任せることが多く、サービスはそれを呼び出して進める・・ということで解決できそう。こうすると複数の画面で似たような処理が起こってもドメインオブジェクトに処理を書いておけば共通化することができます。こういった設計思想の知識が全然なってないなー。

以下、用語の自分なりの解釈(ソースを触りながら多分修正することになりそうですが・・・)

用語

Service

コントローラとモデルの中間的な要素。実務でこういったクラスをみたことはあるのですが、自分の中でまだうまく言語化できていませんね・・・

http://d.hatena.ne.jp/torazuka/20110127/service

Repository

データを直接データベースに格納するのに必要な処理をまとめたクラス。ただしINSERTやUPDATEといったSQLというよりは「業務レベルでの永続化の手続き」。これがあることでプレゼンテーション層とAP層はデータベースのことについて考えなくてすむ。いわゆる隠蔽できる。

Entity

テーブルをオブジェクト化したもの。

Value Object

テーブル以外の数量や金額などをオブジェクトかしたもの。いわゆるstringやintなどをラッピングしてこのクラスにしていると思われる。

上記の使い分けはむずい・・・あとはひたすらコードをみて(ただ書いて動かすだけではなく背景にある思想まで理解していないとダメ・・)

参考リンクなど

http://qiita.com/okeyaki/items/37eb4b66bd8ef62c1fe8
http://qiita.com/yuku_t/items/961194a5443b618a4cac

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ミスを少なくする工夫について

プログラマであればだれもが「いかにバグを少なくするか」に腐心すると思います。 ところが、人間がある以上、バグ(ミス)は絶対にゼロにはなりません。バグ云々以前に、「人間はもともとミスをする生き物だ」とい …

no image

オブジェクト指向設計 単一責任のクラスの設計

オブジェクト指向をするうえでの大事なポイントなど Contents1 単一責任のクラス設計1.1 メモ1.2 実際のコーディング上のコツ1.3 感想1.4 参考文献 単一責任のクラス設計 メモ 単一責 …

no image

オブジェクト指向について その1

ちょっと最近、仕事でソースの書き方がいい加減になってきたのでオブジェクト指向について考え方を再確認しようと思います。 参考文献 SoftWareDesign 2015年9月号 何も考えずにプログラムを …

no image

正規表現に関して

SQLネタをいろいろと書いておりますが、ちょっとワンポイント的なネタで正規表現について書きたいと思います。 平均的なものは知っているつもりでしたが、シェルの正規表現について知らなかったのでちょっとメモ …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …