데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다.
주요 기능
데이터 은닉과 보호
권한이 없는 곳에서 데이터를 직접 접근하고 임의로 수정하는 것을 방지
변수를 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 |