개발 공부/Java-Spring

SOLID객체지향 5가지 원칙

cookiboii 2025. 6. 27. 16:18

 

 

 

✅ 1. SRP - 단일 책임 원칙 (Single Responsibility Principle)

하나의 클래스는 하나의 책임만 가져야 한다.

 

@Service
public class UserService{

    private final UserRepository userRepository 
   //....
}

@RestController
public class UserController{
    
}

//ex 위에 예시 처럼 컨트롤러는 @RestController  @Service  비즈니스 로직만

 

 

✅ 2. OCP - 개방-폐쇄 원칙 (Open/Closed Principle)

확장에는 열려 있고, 변경에는 닫혀 있어야 한다.

 

public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByEmail(String email);
}

 

✅ 3. LSP - 리스코프 치환 원칙 (Liskov Substitution Principle)

부모 클래스의 인스턴스를 자식 클래스로 대체해도 문제가 없어야 한다.

 

 

✅ 4. ISP - 인터페이스 분리 원칙 (Interface Segregation Principle)

큰 인터페이스 하나보단, 여러 개의 구체적인 인터페이스가 낫다.

public interface UserRepository extend JpaRepository<User, Long> {
   //
}

public interface BoardRepository extend JpaRepository<Board, Long> {
    //
}

 

✅ 5. DIP - 의존 역전 원칙 (Dependency Inversion Principle)

상위 모듈은 하위 모듈에 의존하면 안 된다.

@Service
public class UserService {
     // private  UserRepository userRepository = new JpaRepository();
     
     private final UserRepository userRepository;
    
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

 주석 처럼하지말라는거다 그뿐만 아니라 스프링 DI원칙에도 위배가 된다 스프링에서 어차피 에러라고 말해준다 

'개발 공부 > Java-Spring' 카테고리의 다른 글

프로젝트#3  (0) 2025.07.04
개인프로젝트#2  (0) 2025.07.01
개인 프로젝트 #1  (0) 2025.06.30
객체끼리 비교할 때 무조건 equals메서드 사용할 것  (0) 2025.06.12
record type  (0) 2025.06.11