본문 바로가기

Java/The Java9

[모던 자바 인 액션] 동작 파라미터화 본 포스팅은 모던 자바 인 액션을 읽고 내용을 제 나름대로 정리한 것입니다. 자세한 내용은 반드시 해당 책에서 확인하시길 바랍니다. 객체 지향 패러다임이 각광을 받는 가장 큰 이유는 변화에 유연한 대응이 가능하다는 것이다. 요구 사항 변화에 유연하게 대응하도록 설계하는 것은 소프트웨어 유지 보수에 있어 매우 중요하다. 동작 파라미터화를 이용하면 자주 바뀌는 요구사항에 대해 효과적으로 대응할 수 있다. 이번 포스팅에서는 동작 파라미터화가 어떻게 변화에 유연하게 대응할 수 있는지를 살펴보고 Java 8의 람다 표현식이 동작 파라미터화 코드를 간단하게 표현할 수 있음을 확인한다. 모던 자바 인 액션 2장의 내용을 참고하였다. 동작 파라미터화는 메서드의 동작을 파라미터화해서 코드 블록의 실행을 나중으로 미루는 .. 2021. 7. 8.
[Java] 더블 디스패치(Double Dispatch) 6주차 스터디에서 메서드 디스패치에 대해 공부했다. 메서드 디스패치에는 동적 메서드 디스패치와 정적 메서드 디스패치가 있다. 그리고 메서드 디스패치를 활용한 더블 디스패치라는 기법이 있다. 더블 디스패치는 메서드 디스패치를 두 번 사용하여 유연성을 높이는 것인데, Visitor pattern에서 사용되는 기법이다. 여러 자료를 찾아보다가 토비님이 더블 디스패치에 대해 설명해주신 영상을 봤는데 한번에 와닿지는 않아서 포스팅으로 정리하면서 확실히 익혀보고자한다. 토비님의 영상은 여기! https://www.youtube.com/watch?v=s-tXAHub6vg&t=2732s 요구 사항 및 구현 자 우선 SNS 플랫폼에 맞게 포스팅을 뿌리는 서비스를 개발한다고 생각해보자. SNS라는 도메인과 Post라는 서.. 2021. 7. 8.
[Java] 클래스 멤버는 왜 인스턴스 멤버를 참조할 수 없을까? 클래스 멤버와 인스턴스 멤버 간 참조 관계 클래스 멤버(스태틱 변수, 스태틱 메서드)는 인스턴스 멤버를 사용할 수 없습니다. 아래 예시를 보시죠 static 예약어가 사용된 클래스 멤버에서 인스턴스 메서드를 호출하거나 인스턴스 변수를 사용하려고하면 빨간줄이 그어지면서 컴파일 에러가 발생합니다. 반면 인스턴스 메서드에서 클래스 변수를 사용하거나 클래스 메서드를 호출하는데는 아무런 문제가 없죠. 왜 이런 일이 발생할까요? 이는 클래스 멤버와 인스턴스 멤버가 생성되는 시기와 관련이 있습니다. JVM 메모리 구조 우선 JVM의 메모리 구조를 살펴봅시다. JVM의 Runtime Data Area는 서로 다른 용도를 가진 영역으로 구분되어 있습니다. 그 중 메서드 영역, 호출 스택, 힙에 대해 살펴보겠습니다. 메서.. 2020. 12. 30.