본문 바로가기
Flutter

플러터에서 Factory Constructor란 무엇인가요?

by Maccrey Coding 2024. 7. 30.
반응형

 

플러터(Flutter)에서 factory constructor는 객체를 생성하는 특별한 방법입니다.

일반적인 생성자와 달리, factory constructor는 객체를 새로 만들지 않거나, 이미 만들어진 객체를 반환할 수 있습니다.

왜 Factory Constructor를 사용할까요?

  1. 재사용 가능한 객체 생성: factory constructor는 동일한 객체를 여러 번 반환할 수 있어, 메모리를 절약하고 객체 생성 비용을 줄일 수 있습니다.
  2. 조건에 따라 다른 객체 반환: 상황에 따라 다른 타입의 객체를 반환할 수 있습니다. 예를 들어, 입력값에 따라 다른 클래스의 인스턴스를 반환할 수 있습니다.
  3. 객체 초기화 로직 캡슐화: 복잡한 초기화 로직을 감추고, 단순하게 객체를 생성할 수 있습니다.

Factory Constructor 사용법

아래는 factory constructor를 사용하는 간단한 예제입니다.

class Animal {
  final String name;

  // 일반 생성자
  Animal._internal(this.name);

  // 팩토리 생성자
  factory Animal(String type) {
    if (type == 'dog') {
      return Animal._internal('Dog');
    } else if (type == 'cat') {
      return Animal._internal('Cat');
    } else {
      return Animal._internal('Unknown');
    }
  }
}

void main() {
  var dog = Animal('dog');
  var cat = Animal('cat');
  var unknown = Animal('fish');

  print(dog.name); // 출력: Dog
  print(cat.name); // 출력: Cat
  print(unknown.name); // 출력: Unknown
}

예제 설명

  1. 클래스 정의: Animal 클래스를 정의하고, 이름을 받는 _internal이라는 비공개 생성자를 만듭니다.
  2. 팩토리 생성자 정의: factory Animal(String type)을 정의하여, 입력값 type에 따라 다른 Animal 객체를 반환합니다.
  3. 객체 생성 및 출력: Animal 클래스를 사용하여 객체를 생성하고, 이름을 출력합니다.

팩토리 생성자의 장점

  • 유연한 객체 생성: 입력값에 따라 다른 객체를 반환할 수 있어, 다양한 상황에 유연하게 대응할 수 있습니다.
  • 싱글턴 패턴 구현: 하나의 인스턴스만 필요할 때, factory constructor를 사용하여 싱글턴 패턴을 구현할 수 있습니다.
class Singleton {
  static final Singleton _instance = Singleton._internal();

  // 비공개 생성자
  Singleton._internal();

  // 팩토리 생성자
  factory Singleton() {
    return _instance;
  }
}

void main() {
  var s1 = Singleton();
  var s2 = Singleton();

  print(s1 == s2); // 출력: true
}

위 예제에서 Singleton 클래스는 항상 동일한 인스턴스를 반환하여, 싱글턴 패턴을 구현합니다.

결론

factory constructor는 플러터에서 객체를 유연하고 효율적으로 생성할 수 있는 강력한 도구입니다.

복잡한 객체 생성 로직을 캡슐화하고, 메모리를 절약하며, 다양한 상황에 맞춰 객체를 반환할 수 있습니다.

플러터에서 객체 생성이 필요한 다양한 상황에서 factory constructor를 사용해 보세요.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형