Design Pattern/References
캡슐화에서 인터페이스와 추상클래스의 결정
defacto standard
2017. 10. 28. 19:14
인터페이스를 사용하는 경우
- 관련되지 않은 클래스에 일반적인 기능을 제공하는데 적합
- 만들고 있는 기능이 광범위한 분산 개체에서 유용하게 사용될 것으로 예상되는 경우
- 작고 간결한 기능을 디자인 하는 경우
추상클래스를 사용하는 경우
- 밀접하게 관련된 개체에 사용
- 여러 버전의 구성요소를 만들 것으로 예상되는 경우
간단하고 쉽게 구성요소의 버전을 작성할 수 있다. 기본 클래스를 업데이트하면 모든 상속 클래스의 변경 내용이 자동으로 업데이트.
(인터페이스의 경우 한번 만들면 변경 불가. 새 버전의 인터페이스가 필요하면 완전히 새롭게 인터페이스를 만들어야 한다.)
- 큰 기능 단위들을 디자인하는 경우
- 모든 구성 요소의 구현 사이의 일반적인 구현된 기능을 제공하는 경우.
추상 클래스를 사용하면 부분적으로 자신의 클래스를 구현할 수 있으나, 인터페이스에서는 멤버를 구현하지 않는다.