디자인 패턴을 조금 봤다. 필요한 서적들도 챙겨놓고, 준비를 마친 상태이다.
이런 Prototype 패턴 을 보면서 많은 것을 느꼈는데, 깊은 복사와 얕은 복사의 차이점이었다. 개인적으로 분명히 알고 있는 부분이라고 생각했었는데, Cloneable 을 보고 Object.clone() 을 보고 로그를 찍어보는 순간 넋이 빠졌다.
생각으로는 얕은 복사가 되야하는데 리턴되는 객체는 깊은 복사인 것이다. 객체의 해쉬코드가 달랐다.
여기서 이론으로 미약하게 알고 있던 내 머릿속 객체 복사 정리가 무너지는 듯했다. 처음 시작하는 마음으로 다시 고쳐먹고 조사해보기 시작했다. 깊은 복사, 얕은 복사 . 그리고 Cloneable의 구현 의미와 Object.clone(), CloneNotSupportedException 까지 다시 보고 타이핑해보니 머릿 속에 개념들이 다시금 자리를 잡게 되었다.
미약하게 알고 있던 지식이라는 것을 깨닫기 참 좋았다. 간신히 지탱하고 있거나 내가 알고 있다고 믿는 것도 모두 자만이었고 위험한 행동이었던 것이다. 마음다시 고쳐먹게 되는 순간이고 고마운 순간이었다.
덕택에 Call By Reference , Call By Value 도 다시 보게됬고. 기본 언어에 대한 지식이 참 중요하다고 다시금 생각하게 되었다.
Builder 패턴은 다시해도 놀랍더라. 기존의 생성자를 늘리는 과정에서 상속구조를 이용해서 부모 생성자에 집어넣고 자식 객체의 멤버변수에 따로 데이터를 집어넣는 방식 등의 여러 가지 해매던 순간들을 명시적이며 확실하게 부숴주었기 때문이다.
참 유려하지 않나 싶다. Static 메서드를 이용한 명시적이고 깔끔한 메서드 체인과정을 보면 입이 저절로 벌려진다.
'생각모음' 카테고리의 다른 글
Java를 시작한지 250일차, 블로그를 만든 건 246일차. (0) | 2020.12.01 |
---|---|
Java를 시작한지 249일차, 블로그를 만든 건 245일차. (0) | 2020.11.30 |
Java를 시작한지 246,7일차, 블로그를 만든 건 242,3일차. (0) | 2020.11.29 |
Java를 시작한지 245일차, 블로그를 만든 건 241일차. (0) | 2020.11.26 |
Java를 시작한지 244일차, 블로그를 만든 건 240일차. (0) | 2020.11.25 |