그래서 다른 클래스의 객체를 만드는 팩토리가 있습니다. 가능한 클래스는 모두 추상 조상에서 파생됩니다. 팩토리에는 구성 파일 (JSON 구문)이 있으며 사용자 구성에 따라 작성할 클래스를 결정합니다.
이를 위해 팩토리는 JSON 구문 분석에 boost :: property_tree를 사용합니다. 그는 ptree를 통해 어떤 콘크리트 객체를 만들지 결정합니다.
그러나 product-objects에는 많은 필드 (속성)가 있습니다. 구체적인 클래스에 따라, 객체는 약 5-10 개의 속성을 가지게되며, 앞으로는 더 많은 속성을 가질 수 있습니다.
따라서 객체 생성자가 어떻게 생겼는지 잘 모르겠습니다. 두 가지 해결책을 생각할 수 있습니다.
1) 제품의 생성자는 모든 속성을 매개 변수로 예상하므로 생성자는 10 개 이상의 매개 변수로 끝납니다. 이것은 추악하고 읽을 수없는 길고 읽을 수없는 코드 줄로 이어질 것입니다. 그러나 팩토리는 JSON을 구문 분석하고 올바른 매개 변수로 생성자를 호출 할 수 있다는 장점이 있습니다. 제품 클래스는 JSON 구성으로 인해 생성되었음을 알 필요가 없습니다. JSON 또는 구성이 전혀 없다는 것을 알 필요는 없습니다.
2) 제품의 생성자는 property_tree 객체라는 하나의 인수 만 기대합니다. 그런 다음 필요한 정보를 구문 분석 할 수 있습니다. 구성의 정보가 누락되었거나 범위를 벗어난 경우 각 제품 클래스가 올바르게 반응 할 수 있습니다. 공장은 여러 제품에 어떤 인수가 필요한지 알 필요가 없습니다. 공장은 또한 잘못된 구성의 경우 대응 방법을 알 필요가 없습니다. 그리고 생성자 인터페이스는 통합되고 작습니다. 그러나 단점으로, 제품은 JSON에서 필요한 정보를 추출해야하므로 제품 구성 방법을 알고 있습니다.
나는 해결책 2)를 선호하는 경향이 있습니다. 그러나 이것이 좋은 공장 패턴인지 확실하지 않습니다. JSON 구성으로 생성되었음을 제품에 알리는 것이 어떻게 든 잘못된 느낌입니다. 다른 한편으로, 신제품은 매우 간단하게 소개 될 수 있습니다.
그것에 대한 의견이 있습니까?