class Department {
static fiscalYear = 2020;
protected employees: string[] = [];
constructor(protected readonly id: string, public name: string) {}
}
class AccountingDepartment extends Department {
private lastReport: string;
private static instance: AccountingDepartment;
private constructor(id: string, private reports: string[]) {
super(id, 'Accounting');
this.lastReport = reports[0];
}
static getInstance() {
if (AccountingDepartment.instance) {
return this.instance;
}
this.instance = new AccountingDepartment('d2', []);
return this.instance;
}
}
const accounting = AccountingDepartment.getInstance();
const accounting2 = AccountingDepartment.getInstance();
console.log(accounting, accounting2);
하나의 클래스가 하나의 인스턴스를 만드는 전략 = 싱글톤
new 생성자로 직접 인스턴스를 만들지 않고
메서드를 통해서 인스턴스를 하나만 만든다.
위의 콘솔은 같은 인스턴스임을 확인할 수 있다.