Go의 인터페이스
Go에서의 인터페이스는 설계단계에서 정하지 않습니다. 인터페이스는 디자인 단계에서 정하는게 아니고 발견되어져야하는 것이기 때문입니다.
발견되어져야한다라는 말은 곧 어떤 프로그램의 life time 동안 “이 행동들은 인터페이스화 되면 좋겠어”와 같은 공통된 행동을 발견하게 된다는 겁니다.
자바 같은 경우는 interface on the producer side 가 기본입니다. 예를 들자면 어떤 패키지를 만들 때 그 패키지 안에서 인터페이스를 만들고 그 인터페이스를 구현하는 클래스들을 만듭니다. 반대로 Go에서는 interface on the consumer side 를 주로 권장합니다. 예를 들자면 어떤 패키지를 만들 때 그 패키지 안에서 struct 들을 만들고 나중에 그 패키지를 사용하는 다른 패키지에서 그 struct가 제공하는 메서드들이 인터페이스가 되면 좋겠어라고 할때, caller 패키지에서 인터페이스를 정의하기 때문입니다.
다만 스탠다드 라이브러리에서는 살짝 다른데, io 패키지의 Reader 나 Writer 같은 인터페이스들은 구현체와 함께 인터페이스도 제공이 됩니다. 이 이유는 io 패키지안에 Reader와 Writer 인터페이스를 구현하는 구현체가 많기 때문이죠. 또 Reader 와 Writer 같은 심플하고 간결한 인터페이스는 다운스트림 패키지에서도 쓸모가 있기 때문입니다.
댓글을 남기려면 로그인이 필요합니다.
로그인 후 이 페이지로 돌아와 바로 댓글을 남길 수 있습니다.