본문 바로가기
공부/Java

instanceof의 사용을 지양하자

by JERO__ 2022. 3. 30.

instanceof 란?

  • 우리는 종종 그림과 같이 부모를 상속해서 만들어진 자식 객체가 여러 타입인 경우에 특정 클래스가 맞는지 확인하기 위해 아래 코드와 같이 instanceof라는 메서드를 사용하곤 한다. 코드는 piece 객체가 Pawn라는 클래스 타입인지 확인하는 메서드이다.
if (piece instanceof Pawn) {
    return;
}

 

  • 각 객체가 무엇인지 외부의 객체가 그 정보를 알게 된다.
  • 캡슐화가 깨진다
  • 유지보수, 확장에 불리하다.

 

 

instanceof의 사용을 지양하라

  • 사용시 : 개방-폐쇄원칙(OCP), 단일책임원칙(SRP)
    • OCP : 확장에는 열려있고, 변화에는 닫혀있도록 해야한다.
    • SRP : 한 클래스는 하나의 책임만 가져야 한다.
  • 다형성을 이용하자!
if (piece.isPawn()) {
    return;
}

 

결론 : instanceOf를 사용하지 말자!

 

출처 : https://tecoble.techcourse.co.kr/post/2021-04-26-instanceof/

댓글