인스턴스화? 단순히 객체를 선언하고 생성하는 것이 아닌 상황에 따른 생성 위치의 선정과 그 방법 또한 다양하다.
Java | Tomcat | Node.js |
---|---|---|
백엔드 로직 개발 | Java의 웹 호스팅 관리 | 프론트엔드 개발 서버 구동 |
메소드 요청 순서에 따라 예외 상황들이 발생할 수 있음. 트러블 슈팅을 해야한다면 요청순서와 위치 또한 고려할 필요가 있음.
package bclass.step2;
import java.util.StringTokenizer;
class Life1{
/*선언부*/
String s = null; //게으른 인스턴스화
/*메소드-초기화*/
public void init() {
s = new String("300|kiwi");
}
/*메소드-자원활용*/
public void service() {
StringTokenizer st = new StringTokenizer(s,"|");
st.nextToken(); //300
String who = st.nextToken(); //kiwi
System.out.println(who); //kiwi
}
/*메소드-자원반납(소멸)*/
public void destroy() {
if(s != null) {
s = null;
}
}
}
public class LifeMain1 {
public static void main(String[] args) {
Life1 life = new Life1();
// life.service(); //s null인 상태 -> 터짐 , 초기화가 먼저임.
life.init();
// life.destroy(); //canidate 상태 - gc에게 찜 -> 아래에서 값을 사용할 수 없음.
life.service(); //kiwi
life.destroy(); //종료
}
}
<aside>
💡 **게으른 인스턴스화???**
일단 선언을 한 뒤 필요할 때(개발자, 유저, 스프링 - 주체 다양) 사용할 수 있다.
</aside>
<aside>
💡 **인터페이스, 추상클래스?**
인터페이스는 기능적 관점에서 결합도 낮추며(implements) 재정의 사용하는 컨벤션
추상클래스는 서비스의 확장과 관련된 관점, 결합도 높음(extends)
</aside>