본문 바로가기

Java/Methodology

[SOLID] 객체지향 설계 5원칙 - SRP

  • SRP (Single Responsibility Principle) 단일 책임 원칙

클래스와 메소드는 하나의 역할만 해야한다.
어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 로버트 C. 마틴

아래의 코드는 단일 책임 원칙을 지키지 않고 있는 코드이다.

public class PublicTransport
{

    public void 탑승문을연다() {}

    public void 하차문을연다() {}

    public void 하차벨을누른다() {}

    public void 목적지로이동한다() {}

    public void 트렁크에짐을싣는다() {}

}

PublicTransport라는 대중교통이라는 클래스다.
버스와 택시의 행위를 모두 모으다 보니 버스의 역할도 해야하고 택시의 역할도 해야한다.

단일 책임 원칙을 위반한 것이다.

이제 단일 책임 원칙을 위반하지 않도록 코드를 수정해보자.

public class Bus
{
    public void 탑승문을연다() {}

    public void 하차문을연다() {}

    public void 하차벨을누른다() {}

}

public class Taxi
{
    public void 목적지로이동한다() {}

    public void 트렁크에짐을싣는다() {}
}

완벽하게 두 개의 클래스로 분리되어 Bus는 Bus의 역할만 Taxi는 Taxi의 역할만 하도록 변경되었다.