[Design pattern] Visitor pattern Jetpack Composable internal 책을 보던중에 compiler의 checker들은 (정적검사를 하는) visitor pattern으로 동작한다라는 문구가 나옵니다. Compose 얘기를 여기서 할건 아니지만 visitor pattern에 대해서 한번 정리하고 갈까 합니다. 언제 쓰는것인가? 동작과 구조를 분리하기 위해서 사용합니다. 이게 가장 명확한 정의이면서 추상적인 문구 입니다. 이렇게만 얘기하면 블로그를 쓰는 의미가 없기 때문에 예를 들어 설명하면, 어떤 클래스에서 특정 함수를 호출합니다. 이 어떤 클래스는 유사하게 몇개가 존재하고 이 몇개의 class 역시 각각의 특정 함수를 호출하게 됩니다. 특정함수를 호출하는건 맞지만 클래스별로 함수의 동작은 달라집니다. 즉 N개의 클래스(구.. 개발이야기/Kotlin 2년 전
Java 8 Lambda를 이용한 Builder pattern Builder를 Lambda로Builder pattern을 많이들 사용합니다. Java 8에서 지원되는 lambda를 사용하면, 좀더 간단하게 builder pattern을 구현할수 있습니다.한단계씩 예제를 따라가면서 확인해 보시죠~ Builder가 필요한 코드먼저 builder가 필요한 부분에 대한 코드를 보겠습니다. public class Mail { public void from(String address) {...} public void to(String address) {...} public void subject(String line) {...} public void body(String message) {...} public void send() {...} } public void main(.. 개발이야기/Java 7년 전
Java 8 Lambda를 이용한 lazy evaluation 이전 포스팅에서 객체의 생성을 뒤로 미루는 방법에 대해서 얘기했었습니다.이번 글에서는 메서드를 지연시키는 방법에 대해서 알아보겠습니다. Java의 lazy execution자바는 논리 operation을 평가할때 lazy execution을 사용합니다.예를 들어fn1() || fn2() 에서 fn1()의 return값이 true라면 fn2()는 실행하지 않습니다.유사하게, fn1() && fn2() 에서 fn1()의 return값이 false 라면 fn2()를 실행하지 않습니다. 이는 불필요한 연산을 줄여서 속도를 높이는 역할을 하며, 더 효율적으로 동작하도록 합니다. 단, Java는 논리연산에서는 lazy order 또는 normal order를 사용하지만 메서드의 인수를 평가할 때는 eager ord.. 개발이야기/Java 7년 전
Java 8 Lambda를 이용한 virtual proxy pattern 람다를 이용하여 virtual proxy pattern을 구현하는 방법을 알아봅니다. 먼저 버추얼 프록시 패턴이 뭔지를 알아야 겠죠?하지만 이름은 몰랐더라도 이미 사용하는 코드에 녹아있을수도 있습니다. Virtual proxy pattern이 패턴은 어렵지 않은 구조이므로 간단히 개념만 설명하고자 합니다.일단 목적은 "lazy evaluation"입니다. 생성해서 쓰기에 버거운 객체의 초기화를 뒤로 미뤄서 초기 로딩 속도를 높이는 방법입니다.말은 거창하지만 실제로 많이 쓰이는 방법입니다. 어렵지 않고 이미 예제가 많이 있으므로 여기서 따로 설명하지는 않습니다.따라서 잘 설명되어있는 블로그를 링크합니다. 예제가 잘 설명된 글: http://ncanis.tistory.com/102개념이 잘 설명된 글: ht.. 개발이야기/Java 7년 전