У меня есть несколько сервисов (в Spring MVC), которые являются дочерними элементами глобальной службы. Поэтому мне нужно знать о лучшей практике (или ваши мнения) с несколькими методами с этим, например:Повторение кода против readablility
//Domain classes
public class MyParentObject{}
public class MyObj extends MyParentObject{}
//Services
public class MyParentObjectServiceImpl implements MyParentObjectService{
@Override
public MyParentObject findObjectByProp(String prop, String objectType){
//myCode (not abstract class)
}
}
public class MyObjServiceImpl extends MyParentObjectServiceImpl implements MyObjectService{
private myObjType = "MyObj";
@Override
public MyObj findMyObjByProp(String prop){
return (MyObj) super.findObjectByProp(prop, this.myObjType);
}
}
И в этом подходе, я использую вызовы, как это:
MyObj foo = myObjService.findMyObjByProp(prop);
Поэтому мне нужно знать, является ли этот подход «лучше» или более апериодированным, что вызывает прямо родительский метод со вторым параметром. Например:
MyObj foo = (MyObj)myParentObjectService.findObjectByProp(prop, "MyObj");
.. и избегать создания вторых методов, более конкретных. Важно знать, что детские службы будут созданы в любом случае, потому что у нас есть много кода, специфичного для объектов домена.
У меня есть идея, что первый подход лучше, потому что он более читабельен, но мне нужно поддержать это решение с помощью некоторых документов, блога или мнений, чтобы обсудить эти проекты с моими коллегами.
Возможно, у вас несколько детей, которые имеют ту же форму, что и MyObjServiceImpl? Я пытаюсь выяснить, что означает «повторение», упомянутое в вашем названии. Если у вас несколько дочерних элементов, то я вижу, как 'findMyObjByProp' будет повторяться. Но, возможно, есть другой путь вокруг этой проблемы. – ajb
Да! У меня много MyObjServiceImpl: MyObjServiceImpl, MyOtherServiceImpl ... bla bla. Как 10 различных объектов, которые являются дочерью MyParentObject – MarcosTonina