1. Factory 키워드
- 목적: 객체 생성 과정을 커스터마이즈하거나 객체 생성을 제어할 때 사용.
- 주용도:
- 싱글톤 패턴 구현: 하나의 객체만 반환하도록 보장.
- 객체 캐싱: 동일한 입력에 대해 동일한 객체를 반환.
- 다형성 객체 생성: 조건에 따라 다른 클래스의 인스턴스를 반환.
- 객체 생성 로직을 캡슐화하여 클라이언트 코드가 세부 사항을 알 필요 없게 함.
- 특징:
- 객체를 반환할 수 있는 생성자 형태.
- 반드시 새로운 객체를 반환할 필요는 없음 (기존 객체를 반환 가능).
- 보통
private
생성자와 함께 사용됨.
Factory의 예시:
class Example {
static final Example _instance = Example._internal();
factory Example() {
return _instance;
}
Example._internal();
}
2. Static 키워드
- 목적: 클래스 수준에서 접근 가능한 메서드나 변수를 정의.
- 주용도:
- 인스턴스 없이 호출 가능한 함수 제공.
- 클래스 공용 데이터나 상수를 관리.
- 유틸리티 함수 정의.
- 특징:
- 객체가 아닌 클래스에 속함.
- 상태를 가지지 않고, 전역적 작업에 적합.
- 생성자와 관련이 없고, 객체 생성 로직은 직접 제어 불가.
Static 예시:
class Utility {
static String toUpperCase(String input) {
return input.toUpperCase();
}
}
void main() {
print(Utility.toUpperCase("hello"));
}