SOLID 설계의 원칙 4 – 인터페이스 분리 원칙

Posted on

인터페이스 분리 원칙(Interface Segregation Principle)은 인터페이스를 분리할때 지켜야 할 원칙을 말한다.

앞서 단일 책임의 원칙을 준수하기 위해 클래스를 쪼개서 독립된 클래스로 만들고 속성과 메소드를 분배해서 두었다.

이 경우에 만능 개발자 클래스는 사라지고 각각으로 쪼갠 클래스만 존재하게 되었다. 이 경우에 인터페이스를 써서 분리하면 이점이 있는 경우가 있게 된다. 만능 개발자 클래스는 그대로 두고, 각각의 쪼갠 클래스를 인터페이스로 분리하는 것이다.

이 경우 단일 책임 원칙을 따르느냐, 인터페이스 분리 원칙을 따르느냐는 개발자가 결정할 사안이다. 코드 구조상 만능 기술자 클래스를 따로 두는 것이 필요할 수도 있고, 아닐 수도 있기에 취향에 따라 하면 되는데, 이에 대해서는 인터페이스 최소 원칙이 있어야 한다. 즉 프론트엔드 개발자에 쓰인 Angular하기() 메소드는 시스템 관리자에 제공할 필요가 없고 제공해서도 안된다.

빈약한 상위클래스와 풍성한 상위클래스의 차이도 고려해보면 좋다. 다시말해 만능 개발자 클래스의 속성으로 이름, 생일, 직원ID가 있다면, 프론트엔드 개발자는 이 속성을 상속할 수도 있고 확장할 수도 있다. 이는 풍성한 상위클래스의 경우이고, 빈약한 상위클래스인 경우, 만능 개발자 클래스에 속성이 이름이 있다면, 프론트엔드 개발자와 웹퍼블리셔는 각각 생일, 직원ID, 서로 다른 부서 번호를 가질 수 있고, 메소드도 따로 쓰는 경우를 말한다.

빈약한 상위클래스인 경우 형변환이 자주 곳곳에서 일어나서 상속의 장점이 안살려진다. 풍성한 상위클래스인 경우를 쓰면, 형변환도 없게 되고, 사용불가능함도 최소화된다.

인터페이스 최소주의 또한 중요하다고 앞서 언급했는데, 인터페이스 분리 원칙을 준수해야 할때 챙겨보면 좋은 사안이다. 웹퍼블리셔가 디자인 전공을 할때 시스템 관리자의 업무를 할 수 없고 단지 자신의 업무만 할 수 있듯이, 인터페이스는 is able to 의 원리에 따라 분리해야 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다