버튼을 눌렀을 때 수행 할 특정 작업을 사용자가 지정할 수 있도록하는 시스템을 설계 중입니다. 수행 할 작업을 모든 종류의 작업에 할당 할 수 있습니다. 그래서 나는 "ButtonTask"라는 추상 기본 클래스를 가지고 있으며, 다른 모든 태스크는이베이스로부터 상속 받아 수행해야 할 작업을 구현해야한다. 이 방법으로 다형성을 사용하여 모든 세부 사항을 추상화 할 수 있습니다. 실제로 어떤 유형인지 신경 쓰지 않고도 "PerformTask"를 호출합니다. 여태까지는 그런대로 잘됐다.팩토리 패턴 - 여러 팩토리를 갖고있는 것이 좋은 생각입니까?
실제 작업 자체는 다른 방법으로 설정할 수 있습니다. 사용자는 UI 메뉴를 사용하여 작업을 변경할 수 있으며 파일에서 작업을 읽을 수 있으며 작업은 네트워크 메시지를 통해 원격으로 설정할 수 있습니다.
현재 네트워크 메시지를 기반으로 올바른 파생 형식을 만들고 기본 형식에 대한 포인터를 반환하는 팩토리 함수가 있습니다. 문제는 UI 메뉴와 파일 읽기가 본질적으로 서로 다르므로 객체 생성을위한 자체 factory 메소드가 필요하다고 느끼는 것입니다. 이런 종류의 문제에 대해 여러 공장을 갖는 것이 일반적으로 좋은 생각입니까? 나는이 문제를 둘러싼 또 다른 방법을 생각할 수는 없지만 할 수있는 일이 더 낫다.
모든 작업은 (UI, netowrk, file) 방법 중 하나로 설정할 수 있습니다. 그래서 저는 여러분에게 동의합니다. 단지 하나의 공장 만이 의미가 있습니다. 그러나 UI, netowrk 메시지 및 파일과 관련된 데이터 구조는 본질적으로 다른 방식으로 작업 데이터를 저장하기 때문에이를 구현하는 방법을 모르겠습니다. 내 공장에서 이러한 다양한 데이터 구조를 알아야하는 것은 아니지만 한 공장에서 처리 할 수있는 일반적인 데이터에 어떻게 데이터를 넣을 수 있습니까? 공장의 일반 데이터를 만드는 3 가지 방법이 필요하지 않을까요? 그 점을 무시하는 것 같습니다. – oggmonster
그렇습니다. 공장에서 요구하는 양식으로 해당 이니시에이터의 관련 데이터를 추출해야합니다.이 데이터는 호출 방법 및 대상을 모르는 상태 여야합니다.구성이 복잡한 경우에는 필요한 데이터를 검색 할 수있는 추상 클래스 (또는 인터페이스) 인 TaskConfig를 사용하여 팩토리에 TaskConfig 객체를 가져올 수 있습니다. 그런 다음이를 UiTaskConfig, NetworkTaskConfig 및 FileTaskConfig로 하위 클래스 화하고 해당 작업 개시 자의 책임으로 만들어 이러한 객체를 올바르게 채우고 공장에 전달합니다. – Uffe