클래스 불변식(Class Invariant)은 객체의 상태가 항상 만족해야 하는 조건 또는 규칙을 의미합니다. 즉, 객체가 생성된 이후부터 소멸될 때까지 특정 속성이나 관계가 항상 참(true)이어야 한다는 것입니다. 이러한 불변식은 객체의 일관성과 안정성을 보장하는 데 중요한 역할을 합니다.
불변식의 의미:
어떤 클래스가 있을 때, 그 클래스의 객체는 특정 조건을 만족해야 정상적인 상태로 간주될 수 있습니다. 이러한 조건을 불변식이라고 합니다. 예를 들어, Person 클래스가 있고, 나이를 나타내는 age 속성이 있다면, age는 0보다 크거나 같아야 한다는 것이 불변식이 될 수 있습니다. 만약 age가 음수 값을 가지게 된다면, 이는 객체의 상태가 비정상적인 것이므로 불변식이 깨진 것입니다.
불변식의 중요성:
불변식의 예시:
불변식을 유지하는 방법:
Java에서의 불변식 구현 예시:
public class BankAccount {
private final String accountNumber;
private int balance;
public BankAccount(String accountNumber, int initialBalance) {
if (initialBalance < 0) {
throw new IllegalArgumentException("Initial balance cannot be negative.");
}
this.accountNumber = accountNumber;
this.balance = initialBalance;
}
public void deposit(int amount) {
if (amount <= 0) {
throw new IllegalArgumentException("Deposit amount must be positive.");
}
this.balance += amount;
}
public void withdraw(int amount) {
if (amount <= 0) {
throw new IllegalArgumentException("Withdrawal amount must be positive.");
}
if (amount > this.balance) {
throw new IllegalArgumentException("Insufficient balance.");
}
this.balance -= amount;
}
// accountNumber는 final이므로 Setter가 없음 (불변)
public String getAccountNumber() {
return accountNumber;
}
public int getBalance() {
return balance;
}
}
웹소켓 통신 시 1::, h, a와 같은 문자열 (0) | 2025.01.08 |
---|---|
java:comp/env/ 규칙은 뭘까? (0) | 2025.01.08 |
로드 밸런싱 (Load Balancing) vs 리버스 프록시 (Reverse Proxy) 차이 (0) | 2024.11.29 |
L4 및 L7 로드 밸런싱이란? (0) | 2024.11.28 |