1. 싱글턴 (SingleTon) ← 객체를 하나만 유지하는 경우

    외부에서 어떤 클래스에 대한 객체를 하나 만들고, 그 객체에 대한 메소드 호출을 막는다.

    싱글턴 유지를 해야하는 객체의 경우에는 이 객체 생성과 동시에 초기화를 해주고 그 객체가 프로그램이 끝날 떄까지 유지가 되길 바람...

    자기 자신을 멤버 변수로 두는 경우가 있음 (자기 객체가 Wrapping Class가 되는 경우)

    이 자기 자신 멤버 변수를 초기화를 ← 초기화 해주는 멤버 함수를 프라이빗

    class Singleton {
    	static final _something = Singleton._internal();
    
    	factory Singleton() {
    		return _something;
    	}
    
    	Singleton._internal() {
    		// 객체에 대한 옵셔널들 알아서 로직 처리하도록
    	}
    }
    
  2. 스트림 관련 함수와 같이 객체 내부에서만 공용성 높게 처리를 하려구 쓰는 경우