객체지향의 꽃은 다형성이라고 한다.
그런데, 객체지향 프로그래밍의 SOLID원칙과 다형성이 계속 함께 갈 수 있을까?
객체지향 프로그래밍의 5가지 원칙인 SOLID원칙을 다시 생각해보자.
- 하나의 클래스는 하나의 책임만 가지게 만들어, 여러 액터들에 의해 수정이 일어나지 않도록 해야한다는 단일 책임 원칙
- 변경(수정)에는 닫혀있고, 확장에는 열려있도록 해야한다는 개방 폐쇄 원칙
- 상속받은 자식 클래스를 업캐스팅해서 부모 클래스의 메서드로 사용해도, 원래의 의도대로 동작이 될 수 있어야 한다는 리스코프 치환 원칙
- 인터페이스를 구현하여 객체를 만들기 위해서는 무조건 모든 메서드를 오버라이딩 해야하기 때문에, 최대한 목적과 용도에 맞도록 인터페이스를 분리하여 불필요한 구현을 하지 않도록하자는 인터페이스 분리 원칙
- 어떤 클래스를 직접 참조하여 의존 관계를 설정하는 것이 아니라, 해당 클래스를 추상화한 인터페이스에 의존하여 결합도를 낮추자는 의존 관계 역전 원칙
우리가 인터페이스를 사용하여, 각 클래스간의 결합도를 낮출 수 있다.
그리고 이렇게 인터페이스를 활용함으로써 다음과 같은 장점을 가진다.
- 다양한 클래스를 만들어, 확장이 가능하다.
- 자신이 이용하지 않는 메서드에 의존하지 않을 수 있다.
그러나 인터페이스를 너무 많이 분리하게되면, 다형성을 지킬 수가 없다.
그렇기 때문에 우리는 인터페이스로 지킬 수 있는 SRP와 다형성 중에서 선택이 필요하다.
나는 그래도 분리를 하자는 주의다.
왜냐하면, 쓸데없는 메소드를 구현함으로써 의도치 않은 진행이 일어날 수 있기 때문이다.
요새, 자동화가 되는 이유도 휴먼에러 때문이니까...
다시 코드를 가지고 와야겠다.
'언어(Language) > JAVA' 카테고리의 다른 글
[JAVA] JPA는 무엇일까? (2) | 2024.07.29 |
---|---|
[JAVA] Optional, 사용하는 이유와 메서드 5가지 (5) | 2024.07.25 |
[JAVA] 예외(Exception)는 어디서 처리하는게 좋을까? (0) | 2024.07.24 |
내가 생각하는 SOLID원칙 (0) | 2024.07.12 |
[JAVA] 생성자도 상속이 된다는 입장에서 쓰는 글 (0) | 2024.07.04 |