10년전인가 처음에 자바의 정석 봤는데 갈색깔 2판 가지고있었음
좀보다가 쓰레드 까지만 보고 자바가지고 뭐하지 하다가
할거도 없고 안드로이드 앱만드는데 썼어.
나중에 스프링이라는게 있다는거 알게되었는데
그때는 객체지향 잘몰랐음
---
근데 여기서 이상한게 하나 나왔어.
뭐냐면 스프링 3이 였는데 책에서 무조건 인터페이스 하나 만들라는거임
내가 객체지향배울때는 인터페이스는 뭐 바꿀꺼 아니면 만드는거 아니랬는데 책따라해보니까
ㄹㅇ 인터페이스 안만들면 컴파일이 안되는거임
그래가지고 자바는 원래 이런거였나? 안드로이드는 안그랬는데 하면서 꾸역꾸역따라함
나중에 알고보니까 스프링에서 AOP 라는게 있는데
그게 뭐냐면 어노테이션을 지정해주면 메서드 시작, 끝부분에 넣어서 일괄적으로 작동시키는거였음
근데 이걸 런타임에 해주려면 인터페이스가 있어야 프록시로 만들수있었데...ㄷ
그건또 다른책에서 알게됨 여튼 보니까 나중에는 그게 CGLIB 이라는게 들어가면서 (얘는 외부 라이브러리라네)
런타임에 알아서 동적프록시를 만들어준데 그래서 인터페이스를 1:1 로 무조건 만들필요가없어졌고
안드로이드는 왜 그냥되었나 알아보니까 컴파일타임에 다붙인데 ㄷ 구글 ㄷㄷㄷㄷㄷㄷ
여튼 객체지향은 인터페이스 필수라는 오해생길뻔.
근데 CGLIB 생겨서 인터페이스 필요없는데 관습으로 하나씩 만드는 사람이 여전히 있나봄.
자바 jvm 에서 안해주는거 외부에서 이리뛰고 저리뛰고 ㅋㅋㅋㅋㅋㅋㅋ
그런 어려운건 몰라도 되는 순수황흐프로 가자 이기
프레임워크 쓰다보면 자기네꺼에 내재된 디자인패턴을 사용자 코드베이스에 강제하는 경우가 있는데, 어차피 그 프레임워크를 써서 만들어야 하다보니 그 패턴에 맞춰서 앱도 설계하고 만드는게 유지 보수도 깔끔하고 만들기도 편해짐
그걸 꺠닫다니