최근 인터페이스로 추상 클래스를 사용하는 몇 가지 예제를 실행했지만 추상 인터페이스에 팩토리 생성자를 추가하여 의미가 "새로 추가"될 수 있습니다. 예를 들어이 서비스의팩토리 생성자가있는 추상 클래스의 이점은 무엇입니까?
abstract class WidgetService {
factory WidgetService() = ConcreteWidgetService;
Widget getWidget();
void saveWidget(Widget widget);
}
class ConcreteWidgetService extends BaseWidgetService implements WidgetService {
WidgetService();
Widget getWidget() {
// code to get widget here
}
void saveWidget(Widget widget) {
// code to save widget here
}
}
용도는과 같이 다른 서비스 또는 구성 요소에있을 것입니다 : 선 위의 것 본질적으로 "새로운"업이 샘플에 대한 이해를 바탕으로
WidgetService _service = new WidgetService();
WidgetService는 일반적으로 Dart 분석기로부터 경고를 생성하고, 서비스 변수는 실제로 WidgetService의 팩토리 생성자에 ConcreateWidgetService를 할당하여 ConcreateWidgetService의 인스턴스가됩니다.
이 접근법에 이점이 있습니까? 내 OOP 경험에서 필자는 구체적인 유형을 알지 못했을 때 프로그램을 작성하기 위해 추상 클래스/인터페이스를 사용했습니다. 여기에서는 우리가 구체적인 타입을 추상 팩토리 생성자에 즉시 할당하는 것 같습니다. 내 두 번째 질문은이 인스턴스에 왜 모든 ConcreteWidgetService를 여기에서 직접 사용하지 않을 것인가?