아이템 4 인스턴스화를 막으려거든 private 생성자를 사용하라
인스턴스화를 막으려면 private 생성자를 사용하여 클래스 외부에서 객체를 생성하지 못하도록 제한할 수 있다. 이를 통해 클래스의 유일한 인스턴스 또는 정적 메서드를 통해서만 객체에 접근하도록 유도할 수 있다.
싱글턴 패턴
public class DatabaseConnection {
// 유일한 인스턴스를 저장할 정적 변수
private static final DatabaseConnection INSTANCE = new DatabaseConnection();
// private 생성자: 외부에서 인스턴스를 생성할 수 없도록 함
private DatabaseConnection() {
// 초기화 코드
}
// 인스턴스를 반환하는 정적 메서드
public static DatabaseConnection getInstance() {
return INSTANCE; // 유일한 인스턴스를 반환
}
public void connect() {
System.out.println("Database connected!");
}
}
// 사용 예시
public class Main {
public static void main(String[] args) {
DatabaseConnection dbConnection = DatabaseConnection.getInstance();
dbConnection.connect();
}
}
위 코드에서는 DatabaseConnection 클래스의 생성자가 private로 선언되어 있어서 외부에서 이 클래스의 인스턴스를 직접 생성할 수 없다. 대신, getInstance() 메서드를 통해 유일한 인스턴스에 접근할 수 있다. 이렇게 하면 인스턴스의 중복 생성을 방지하고, 데이터베이스 연결을 관리하는 싱글턴 객체로 사용할 수 있다.
'Java' 카테고리의 다른 글
이펙티브 자바(Effective Java) 2장 - 아이템 6 불필요한 객체 생성을 피하라 (0) | 2024.12.03 |
---|---|
이펙티브 자바(Effective Java) 2장 - 아이템 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 2 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 1 생성자 대신 정적 팩터리 메서드를 고려하라 (1) | 2024.12.03 |
아이템 4 인스턴스화를 막으려거든 private 생성자를 사용하라
인스턴스화를 막으려면 private 생성자를 사용하여 클래스 외부에서 객체를 생성하지 못하도록 제한할 수 있다. 이를 통해 클래스의 유일한 인스턴스 또는 정적 메서드를 통해서만 객체에 접근하도록 유도할 수 있다.
싱글턴 패턴
public class DatabaseConnection { // 유일한 인스턴스를 저장할 정적 변수 private static final DatabaseConnection INSTANCE = new DatabaseConnection(); // private 생성자: 외부에서 인스턴스를 생성할 수 없도록 함 private DatabaseConnection() { // 초기화 코드 } // 인스턴스를 반환하는 정적 메서드 public static DatabaseConnection getInstance() { return INSTANCE; // 유일한 인스턴스를 반환 } public void connect() { System.out.println("Database connected!"); } } // 사용 예시 public class Main { public static void main(String[] args) { DatabaseConnection dbConnection = DatabaseConnection.getInstance(); dbConnection.connect(); } }
위 코드에서는 DatabaseConnection 클래스의 생성자가 private로 선언되어 있어서 외부에서 이 클래스의 인스턴스를 직접 생성할 수 없다. 대신, getInstance() 메서드를 통해 유일한 인스턴스에 접근할 수 있다. 이렇게 하면 인스턴스의 중복 생성을 방지하고, 데이터베이스 연결을 관리하는 싱글턴 객체로 사용할 수 있다.
'Java' 카테고리의 다른 글
이펙티브 자바(Effective Java) 2장 - 아이템 6 불필요한 객체 생성을 피하라 (0) | 2024.12.03 |
---|---|
이펙티브 자바(Effective Java) 2장 - 아이템 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 2 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2024.12.03 |
이펙티브 자바(Effective Java) 2장 - 아이템 1 생성자 대신 정적 팩터리 메서드를 고려하라 (1) | 2024.12.03 |