Клиент использует их через базовый класс (код Java):
BaseClass baseObj1 = new DerivedClass("valueofreqdfeature");
//the required feature gets added to the map in the base class
Map<String, Object> features = Collections.singletonMap("requiredFeature1Name","requiredFeatureValue");
BaseClass newBaseObj = baseObj1.createNewConcreteFeature(features);
createNewConcreteFeature
получит только требуемые значения Feature из карты и вернет экземпляр. Это похоже на метод, который был бы статическим в производном классе, но тогда клиент не может создавать экземпляры производного класса с существующим объектом. Есть ли более элегантный способ написать это? или у этого есть какой-то применимый шаблон?