안녕하세요. 요세 한창 소프트웨어 설계를 공부하고 있는 현역군인입니다.
설계를 공부하던 도중 SRP 와 ISP 원칙이 서로 의미가 다른 것 같아 질문드립니다.
SRP는 단일 책임의 원칙으로써 클래스는 하나의 책임만을 가지는 것이고..
ISP는 인터페이스 격리의 원칙으로써 클래스는 자신과 관계없는 메소드나 기능을 인터페이스로 분리시키는 원칙이라고 배웠습니다.
여기서 약간의 모순점(?) 이라고 해야하나.. 뭔가 느낌이 모순된 느낌입니다.
SRP는 분명 단일 책임을 가져야하는 것이고.. ISP는 분명히 사용하지 않는 메소드나 기능을 분리하여 인터페이스로 분리하는 원칙인데..
ISP로 나뉘어진 인터페이스를 복수개로 상속받아 구현하게 된 클래스가 있다면.. 복수개의 책임을 가지게 되지 않습니까? (이건 분명 SRP 원칙에 어긋납니다.)
예를 들면 어떤 한 게임 객체가 있는데 이 객체는 Update 와 Draw 라는 메소드의 기능이 있습니다.
이 게임 객체는 IDrawable 인터페이스와 IUpdateable 인터페이스를 구현하게 됩니다.