skillup

技術ブログ

アーキテクト設計全般

デザインパターンの使い所

投稿日:

昔からデザインパターンは勉強しておりましたが、使い所などで悩むことが多かったです。

現在の現場でいろいろなパターンを見させていただき、なんとなくではありますが使い所がわかったので、まとめてみようと思います。

Factoryパターン

Simple Factoryパターンについて

インスタンス生成をFactory内部で行うことで疎結合化させることができます。

使い所はテストデータの構築などで一部のステータスや状態変化系のパラメータだけ変えたい時など。

Facadeパターン

Facadeパターンについて(Laravelを題材に)

窓口を簡潔にすることで、アプリ本体とライブラリを疎結合状態にすることができる。インスタンス作成を不要にできる。

使い所としては、外部のライブラリを読み込み、それを使うときなど。

Observeパターン

Observeパターンについて

event-listenerについて

特定のモデルを監視し、何かのイベントをトリガーとして、起動するパターン。

使い所としてはLogの仕込みや履歴系のテーブルの保存など。

ただし、通常のプログラムとは別の場所に処理を書くため、動きを把握しきれないというデメリットもあり。類似の処理としてevent-linsterなど

Stateパターン

ステートパターンについて

状態遷移の担保など。

おもにstatusなどの状態を表す値でつかうことが多い。一定のステータスから一定のステータスへの変更がありえるか、ありえないかなど。

ファーストコレクション

値オブジェクトやファーストコレクションなどについて

在庫状態や予約データなど、変数や配列でもたせるだけでは足らず、メソッドなども併せて、複雑な状態を表現するときに使用。

シングルトンパターン

インスタンスの生成を1つにできる。

グローバルな値を使いたいとき。かつメモリやCPUの消費を抑えられるというメリットがある。オブジェクト指向ではあまりないかも・・・

【初心者向け】シングルトンパターンをわかりやすく解説

Repositoryパターン

Service層と値オブジェクト、Modelなどのはしわたしをします。

大きい効果を発揮する箇所としてはキャッシュとDBで処理を分けたいとき。

要は参照系の処理はアクセスが多いため、Redisなどのキャッシュを使い、更新系の処理などはDBを見なくてはいけない。。。のようなときにIFは共通なんだけれども、実装を分けたい場合に便利です。

リポジトリとは?

リポジトリパターンと Laravel アプリケーションでのディレクトリ構造

-アーキテクト設計全般
-

執筆者:


comment

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

関連記事

no image

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

今回は場合分けによる変更コストとオブジェクト指向のメリットについてです。 例えば給付金が発生して、その金額を死亡時、退職時、通常時で場合分けするとき、if-elseで書けば下記のようになります。 [c …

no image

オブジェクト指向設計 依存関係の管理

オブジェクト指向シリーズ。読みにくい本が多い中でオブジェクト指向設計実践ガイドは勉強になるなー。 Contents1 依存関係の管理1.1 メモ1.2 実際のコーディング上のコツ1.3 感想 依存関係 …

no image

event-listenerについて

前回Observeパターンに触れましたが、少し似たパターンとしてevent-listenerを使ったパターンが存在します。 Model(Eloquentのフック)というのが大まかな共通項ですかね。 そ …

no image

オブジェクト指向 プレゼンテーション層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。 Contents1 プレゼンテーション層の考え方1.1 要点1. …

no image

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

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

アーカイブ