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

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …

no image

型の意識について(ValueObjectの活用など)

現在の現場でコードレビューをしてもらう機会が増え、自分が弱かった型の意識について。 現在ではPHPでも型を記述してコーディングすることが一般的なため、静的言語と同じように型を意識することが増えてきたか …

no image

アプリケーション間のデータの連携方法に関して

以前やった「現場で役立つシステム設計の原則」を再読してます。 今、読んでいるのはアプリ間のデータ連携に関して。 複数のアプリ間でデータをやり取りする場合、以下のような方法が考えられます。 ファイルを直 …

no image

抽象性と可読性のトレードオフに関して

私自身プログラムを書く場合、とにかくコードを書く量を制限したいという思いが強く、多少でも共通化できる箇所がある場合はなるべく共通化するようにしておりましたが、時と場合によっては過剰に共通化したことによ …

no image

自動テストをやる上で今まで障害だったこと

自動テストについて、考え方自体は5年以上前から知っていましたが、プロジェクトで実際に使われているのを見たのは今年4月になってからでした・・・ 自動テスト完備なんて昔は夢物語だと思ってたんですけどね・・ …

アーカイブ