뷰바인딩을 할때 두 가지가 있다
var로 선언할지 val로 선언할지..
1. var
private lateinit var binding: MainActivityBinding
.
.
.
binding = MainActivityBinding.inflate(layoutInflater)
private val binding: MainActivityBinding by lazy{
MainActivityBinding.inflate(layoutInflater)
}
둘 중 뭘 선택할지는 개인의 취향이다.
튜터님과 구글의 추천은 1번이라고 한다.
프래그먼트에서 뷰바인딩을 사용할때 메모리 누수가 날 수 있다.
왜냐하면 프래그먼트는 화면에서 사라졌을지라도 메모리 어딘가에 살아있을 수 있기 때문
그래서 _binding을 사용해서 onDestryView()때 _binding = null로 바인딩을 끊어줘야한다.
_binding : 변경이 될 수 있는값은 var인 _binding을 사용하고
실제로 개발자가 사용하는 코드는 val인 binding을 사용한다.
private var _binding: ResultPrifileBinding? = null
private val binding get() : _binding!!
_binding = ResultPrifileBinding.inflate(inflater, container, false)
val view = binding.root
처음 개발시에는 요소가 이정도면 충분하겠지 하고 만들었는데
추후에 요소가 추가되는 경우가 빈번하다.
그래서 현업에서는 처음부터 확장성을 고려해서 만든다.
고로 처음 설계시 data class를 주로 사용한다.(확장 용이)
디자인패턴의 일부
클래스에서 어떤 객체를 만들지를 외부에서 알려주는 패턴이다.