private static Customers allCustomers;
private static final int DEFAULT_SIZE = 10;
protected Customer[] customers;
private int size;
private int capacity;
protected Customers() {
customers = new Customer[DEFAULT_SIZE];
capacity = DEFAULT_SIZE;
}
접근제한자 | 외부 접근가능한 클래스범위 | 외부 호출가능한 생성자범위 |
---|---|---|
public | 모든 외부에서 접근 가능 | 모든 패키지에서 호출 가능 |
protected | 같은 패키지의 클래스 or 자식클래스에서만 접근 가능 | 같은 패키지의 클래스 or 자식클래스에서만 호출 가능 |
private | 모든 외부에서 접근 불가능 | 외부에서 객체 생성 불가능 |
그래서! 보통 싱글톤 패턴에서는 부모클래스 생성자를 private이 아니라 protected로 하여 클래스를 상속하고 확장할 수 있음을 알았고, 싱글톤패턴이 사용된 클래스는 전부 접근제어자를 protected로 바꿔주었다.
public int size() {return size;}
public int capacity() {return capacity;}
public boolean isEmpty() { return size == 0; }
public void set(int i, Customer customer) {
if (!(i >= 0 && i < size)) return;
if (customer == null) return;
customers[i] = customer;
} //i 번째 원소를 customer로 수정
따라서 size의 크기는 큐에 포함된 요소의 개수에 따라 값이 증감하고
capacity의 크기는 재할당 하기 전까지 고정적이다.
둘의 차이를 잘 알고 변수로 사용할 것!
public void add(int i, Customer customer) {
if (!(i >= 0 && i < size)) return;
if (customer == null) return;
if (size < capacity) {
for (int j = size - 1; j >= i; j--) {
customers[j + 1] = customers[j];
}
customers[i] = customer;
size++;
} else {
grow();
add(i, customer);
}
}
예외처리 사용이 어렵다. 😩
강의를 들을땐 이해가 갔는데 막상 실제에 적용하려니까 어떻게 적용해야할지 모르겠어서 강의를 다시 듣는중이다.