기억의 DataBase

접근지정자 본문

Java

접근지정자

Zester; 2019. 1. 17. 17:57
  • 접근지정자
Class도 일종의 파일
한 폴더에 파일이 많아지면 관리가 어려움
이러한 파일을 관리하는 폴더가 package

JVM은 CLASSPATH에 잡혀있는 클래스들을 사용할 수 있음
naver.co.kr >> kr.co.naver
JVM는 CLASSPATH 경로에서 kr 폴더를 찾음

※ 아무런 설정이 없으면 JVM은 java.lang과 같은 패키지 안에 있는 class만 찾을 수 있음

       protected int pro; // 같은 패키지, 다른 패키지지만 상속 받은 자식
       public int pub;    // 어디서든 접근 가능
       private int pri; // 해당 클래스 내에서만
       int defaultInt; // 같은 패키지에서만
※ 기본 생성자는 public으로 만들어짐

  • 싱글턴 패턴이 적용되어서 만든 Class 
            // 1. private한 생성자를 만듬, 외부에서 인스턴스를 만들지 못하게 함
       private CalBean() {
       }
       // 2. private 하지만 static(딱 한번만 실행되서, 메모리에 하나만 존재)한 필드를 선언
            (private 생성자를 참조하는)
       private static CalBean instance = new CalBean();
       
       // 3. 위의 instance를 외부로 반환하는 public static 메소드
       public static CalBean getInstance() {
             return instance;
       }
        // 싱글턴 패턴으로 만든 객체를 확인
        CalBean a = CalBean.getInstance();
        CalBean b = CalBean.getInstance();      
        if(a == b) {
             System.out.println("각각의 인스턴스 a와 b는 같은 객체!");
        }

※싱글톤 패턴을 쓰는 이유

고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있음
또한 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에
다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다.

※싱글톤 패턴의 문제점

싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 
인스턴스들 간에 결합도가 높아져
"개방-폐쇄 원칙" 을 위배하게 된다. (=객체 지향 설계 원칙에 어긋남)
따라서 수정이 어려워지고 테스트하기 어려워진다.
또한 멀티쓰레드환경에서 동기화처리를 안하면 인스턴스가 두개가 생성된다든지 하는 경우가 발생할 수 있음

출처: https://jeong-pro.tistory.com/86 [기본기를 쌓는 정아마추어 코딩블로그]


'Java' 카테고리의 다른 글

인터페이스  (0) 2019.01.18
상속, 추상클래스  (0) 2019.01.18
생성자  (0) 2019.01.17
예외처리(Exception)  (0) 2019.01.17
객체지향  (0) 2019.01.16
Comments