[dart] factory와 static

ds-k.dev·2025년 1월 17일
0

flutter

목록 보기
1/1

1. Factory 키워드

  • 목적: 객체 생성 과정을 커스터마이즈하거나 객체 생성을 제어할 때 사용.
  • 주용도:
    • 싱글톤 패턴 구현: 하나의 객체만 반환하도록 보장.
    • 객체 캐싱: 동일한 입력에 대해 동일한 객체를 반환.
    • 다형성 객체 생성: 조건에 따라 다른 클래스의 인스턴스를 반환.
    • 객체 생성 로직을 캡슐화하여 클라이언트 코드가 세부 사항을 알 필요 없게 함.
  • 특징:
    • 객체를 반환할 수 있는 생성자 형태.
    • 반드시 새로운 객체를 반환할 필요는 없음 (기존 객체를 반환 가능).
    • 보통 private 생성자와 함께 사용됨.

Factory의 예시:

class Example {
  static final Example _instance = Example._internal();

  factory Example() {
    return _instance; // 항상 동일한 객체를 반환
  }

  Example._internal(); // Private constructor
}

2. Static 키워드

  • 목적: 클래스 수준에서 접근 가능한 메서드나 변수를 정의.
  • 주용도:
    - 인스턴스 없이 호출 가능한 함수 제공.
    - 클래스 공용 데이터나 상수를 관리.
    - 유틸리티 함수 정의.
  • 특징:
    - 객체가 아닌 클래스에 속함.
    - 상태를 가지지 않고, 전역적 작업에 적합.
    - 생성자와 관련이 없고, 객체 생성 로직은 직접 제어 불가.

Static 예시:

class Utility {
  static String toUpperCase(String input) {
    return input.toUpperCase(); // 인스턴스 없이 호출 가능
  }
}

// 사용 예시
void main() {
  print(Utility.toUpperCase("hello")); // "HELLO"
}

0개의 댓글