더북(TheBook)

변형 수용

거의 유사한 수학 기능을 제공하는 java.lang.Mathjava.lang.StrictMath 클래스를 살펴보자. JavaDoc에서는 StrictMath를 이렇게 설명한다. “Math 메서드 상당수는 단순히 StrictMath에서 대응하는 메서드를 호출하여 구현한다.” JavaDoc 설명에 따르면, Math는 단순히 StrictMath로 호출을 위임하는 불필요한 추상화일 뿐이다. 두 클래스 모두 수학 관련 기능을 지원함에도 StrictMath 메서드는 플랫폼에 상관없이 정확히 동일한 결과를 반환한다. 그것은 구현 내용이 적절한 부동소수점 표준에 순응하기 때문이다. 반면, Math 메서드는 부동소수점 숫자를 위한 전용 하드웨어 지원을 사용하여 약간 다른 결과를 반환한다. 여기서 Math는 이식성이 부족하지만, StrictMath와 비교하면 더 나은 성능을 이끌어 낼 수 있다. 따라서 이식성과 성능이라는 목적에 따라 변형을 수용하려고 의도적으로 추상화를 두 가지로 생성한다는 설계 결정을 내릴 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.