こんにちは、バックエンドエンジニアの青山です。今回はデザインパターンをLaravelのプロジェクトに適用してみました。 実際にありそうな仕様を想定して、ナイーブな実装からデザインパターンを使った実装にリファクタリングする形で進めていこうと思います。 たとえば ユーザーが単発の仕事に応募してその報酬をもらえるようなサイトがあるとする 仕事情報は管理画面からCSVでアップロードする仕様になっており、アップされたCSVの内容はDBに保存される 仕事にはいくつかの種類があり、扱うデータが異なる ↑の理由からCSVのフォーマットは仕事の種類ごとに異なる 管理画面にあるCSVアップロードフォームは1つで、フォーム内にはファイル用inputとファイルのタイプ(どんなジャンルの仕事が記載されているCSVなのか)を選択するselectが存在する みたいな仕様があったとします。 フォームはこんな感じのものを想