본문 바로가기

JAVA

[Java] Encapculation

데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다.

주요 기능

데이터 은닉과 보호

권한이 없는 곳에서 데이터를 직접 접근하고 임의로 수정하는 것을 방지
변수를 private로 접근을 막고 공개되는 메서드를 통해서만 접근을 가능하게 한다.(getter/setter)

  • method에 정보 보호 로직 작성
private name; // name에 Not NULL 조건이 있을 경우
public void setName(String name){
    if(name == Null){
        System.out.println("부적절한 이름 설정 시도 : name = Null");
    }
    this.name = name;
}

싱글톤 패턴

객체의 생성을 제한하기 위한 디자인 패턴

 

객체의 생성을 제한해야하는 경우

여러개의 객체가 필요 없는 경우 - 객체를 구별할 필요가 없는 경우 = 수정 가능한 멤버 없이 기능만 있는 경우(stateless 한 객체)
객체의 생성/삭제가 비용이 큰 경우 - 재사용이 유리한 경우

 

구현 방법

private 생성자 작성
클래스 내부에서 직접 객체 생성
외부에서 객체에 접근 가능한 static getter 작성
//방법 1 : lazy 생성
class Singleton{
    private static Singleton instance = Null;
    private Singleton(){
        '''
    }
    public static Singleton getInstance(){
        if(instance == Null){
            instance = Singleton();
        }
        return instance;
    }
}
//방법 2 : 클래스 로드 시 객체 생성
class Singleton{
    private static Singleton instance = new Singleton();
    //static {
    //    instance = Singleton(); //혹은 static 블럭으로 생성도 가능
    //}
    private Singleton(){
        '''
    }
    public static Singleton getInstance(){
        return instance;
    }
}

'JAVA' 카테고리의 다른 글

[Java] 자주 Override하는 함수들 : Object  (0) 2024.01.18
[Java] Polymorphism  (0) 2024.01.18
[Java] Package  (0) 2024.01.17
[Java] Inheritance : 상속  (0) 2024.01.17
[Java] Constructor : 생성자  (0) 2024.01.17