라라벨을 처음시작할때는 정말 문외한이었고
사실 지금도 너무 모르는 기능들이 많다
그래서 처음에 개발할때는 모든 패턴의 시작인 MVC패턴을 사용했다.
근데 ,, 개발하면서 뭔가 답답함을 느꼈다
includeFunction이라고해서 이제 뭔가 하나의 비슷한 기능들을 모아놓은 controller들이 있는데
이걸 다른 controller에서 use해서 쓰는 형태가 뭔가 이상하지 않은가? 하는 생각이 들었다
그래서 찾아보니 나온 것이 service 패턴..!!
사실 repository도 포함해서 나누면 좋은데 ㅠㅠ
소스를 현재는 더이상 크게 건들지 못하는 상황이라
일단 controller로 다 섞여있던 친구들 중 특정한 기능만을 모아놓은 controller들을 service로 빼기로 했다
service 패턴이란 ?
서비스 패턴은 애플리케이션의 특정 비즈니스 로직을 캡슐화하고, 이를 서비스 클래스로 분리하는 설계 패턴이다.
이는 주로 객체지향 프로그래밍(OOP)에서 사용되는 패턴으로, 비즈니스 로직을 독립된 서비스 클래스에 분리함으로써 코드의 가독성, 유지보수성, 재사용성을 높인다. => 딱 내가 원하던 그런 느낌.!
1. 라라벨에는 Services 폴더가 없어서 Services 폴더를 생성한다
2. ___Service.php 와 같은 이름을 가진 친구로 파일을 생성해줍니다
3. 아래 코드가 boiler plate에용.
<?php
namespace App\Services;
class UserService
{
}
4. ___Service.php 파일을 잘 만들어주고 , 이제 controller에 가져다 써보자
5.
use App\Services\UserService;
6. 의존성 주입을 하거나해서 잘 가져다 쓰자!
이렇게 소스를 캡슐화 해서 가져다 쓰니까 너무 편하고 controller가 중복되지 않고 개념적으로 둘이 나뉘니까
훨씬 코드가 보기 좋아졌다..! 더 공부해서 repository 패턴도 적용해서 수정해넣고 싶다
'트러블 슈팅 (+궁금증해결)🚀' 카테고리의 다른 글
계속 늘어나는 대규모 시스템을 어떻게 구축해 나아가야할까 (1) | 2024.06.02 |
---|---|
2억개의 상품을 데이터베이스에 어떻게 관리할 것인가? 에 관한 고찰 - 샤딩? nosql? rbdms? (0) | 2024.05.21 |
HttpStatus cannot be resolved to a variable in 스프링부트 (0) | 2024.03.24 |
flutter 안드로이드 웹뷰 디버깅 (0) | 2024.02.23 |
모바일 자판이 열린 상태에서 페이지를 이동하는 경우에 viewport가 깨지는 문제 해결 (1) | 2024.02.08 |