instanceof 대신 캡슐화 & 다형성

최지혜·2022년 11월 23일
0

java

목록 보기
26/33

instanceof

if (piece instanceof Empty) {
    return;
}

piece 객체가 Empty라는 클래스 타입인지 확인하는 메서드

public boolean isSamePiece(Object piece1, Object piece2) {
    return piece1.isInstance(piece2);
}

piece가 piece2와 같은 타입의 객체인지 확인하는 메서드

단점:

  • instanceof를 사용하는 경우, 각 객체가 무엇인지, 어떤 점수를 돌려주어야 하는지 불필요한 외부의 객체가 그 정보를 알게 됨
  • 객체 추가 시, 새로운 메서드를 만들어주기 위해 사용되고 있는 모든 함수를 찾아가서 고쳐야 함. -> 객체의 확장에는 열려있고, 변화에는 닫혀있도록 해야한다는 개방-폐쇄 원칙(OCP) 에 위반
  • instanceof의 경우 알맞은 타입을 찾을 때까지 컴파일 시에 모든 타입을 돌며 검사해야 -> 느림

그럼에도 특정 자료형의 타입을 판별하는 경우는 필요할 수 있다!

캡슐화

객체가 가진 상태나 행위 - 다른 이가 사용하거나 보지 못하도록 숨기는 것

다형성

각 타입에 필요한 구현을 각 객체에 하면 됨
-> 다형성을 이용한 구현을 하면 if 분기문이 많이 필요 없다.

profile
매일 성장하는 개발자

0개의 댓글