클린코드

SRP: 단일 책임 원칙

RE.YEOL 2023. 4. 12. 10:00
Single Responsibility principle : 단일 책임 원칙
Open Close Principle : 개방 폐쇄 원칙
Liscov Substitution Principle : 리스코프 치환 원칙
Interface Sergregation Principle: 인터페이스 분리 원칙
Dependency Inversion Principle : 의존성 역전 원칙

좋은 객체 지향 설계의 5가지 원칙 중 단일 책임 원칙(SRP)에 대해 알아보겠습니다.


Single Responsibility Principle : 단일 책임 원칙
하나의 클래스, 하나의 메소드는 하나의 책임만 가져야 한다.

현실에서 예제를 찾아보도록 하겠습니다.

 

회사에서 출품한 마우스 A, B 모델이 존재한다.

A 모델은 감도가 1이고, B 모델은 감도가 2로 설정되었다.

class Mouse{
	public String model;
    public setModel(String model){
    	this.model = model;
    }
    public void sensitivity(){
    	if(model.equalse("A"){
        	... //감도 1로 지정
		} else if(model.equalse("B"){
        	... //감도 2로 지정
		}
    }
}

Mouse 클래스에 감도의 값을 지정하는 sensitivity() 메서드를 구현하고 있습니다.

sensitivity() 메소드는 Mouse 클래스의 모델에 따라 감도 1, 2로 설정되고 있습니다.

하나의 메소드 하나의 책임만 가져야 하지만, 모델이 따라 감도 값을 설정하기 때문에 SRP 위배가 되었습니다.

 

abstract class Mouse {
	abstract void sensitivity();
}

class ModelA extends Mouse{
	
    @Override
    void sensitivity(){
    	... //감도 1 설정
    }
    
}

class ModelB extends Mouse{
	
    @Override
    void sensitivity(){
    	... //감도 2 설정
    }
    
}

SRP를 준수하며 Mouse 클래스를 추상 클래스로 생성하고 모델 A, 모델 B 각각 Mouse를 상속받아 각자의 감도를 설정하였습니다.