у меня есть 3 класса ObjectTypeA, ObjectTypeB, ObjectTypeC, моя задача вычислить скорость. У этих классов скорость зависит от разных наборов параметров, например у ObjectTypeA скорость зависит от параметров height, viscosity (вязкость) и lenght у ObjectTypeB скорость зависит от параметров height и lenght у ObjectTypeC скорость зависит от параметров height, lenght, density (плотность) и startFlow ( стартовый расход)
Кроме того скорость в каждого объекта зависит от скорости которую ему передал соединенный с ним объект, причем все три типа объектов ObjectTypeA, ObjectTypeB, ObjectTypeC могут соединяться друг с другом (механизм соединения тут не принципиален)
Я хочу сделать строитель с помощью которого можно построить объекты любого класса из трех, для этого я хочу сделать интерфейс
public interface ConstructedObject {
void setLength(long length);
void setHeight(long height);
void setViscosity (double viscosity);
void setDensity (double density);
void setStartFlow (double startFlow);
void build();
}
Соответственно сделать строители каждого объекта реализующие этот интерфейс чтобы мне потом не привязываться к конкретным классам строителей а привязываться к интерфейсу, как то так:
public class ObjectBuilder(){
public ConstructedObject CreateObjectTypeA(){
return new ContructObjectTypeA()
}
}
//Use in main code
ObjectBuilder objBuilder= new ObjectBuilder();
ConstructedObject cObj=objBuilder.CreateObjectTypeA()
cObj.setLength(5);
cObj.build();
Но при таком подходе при создании ObjectTypeA у меня будет пустая реализация методов void setViscosity (double viscosity); void setDensity (double density); void setStartFlow (double startFlow);
ну и соответственно для других объектов будут встречаться пустые реализации методов. В связи с этим вопрос, является ли такой подход допустимым? С одной стороны неправильно вызывать метод setViscosity там где он не имеет смысла и если добавится еще один объект с новым свойством, которое добавится в интерфейс придется переписывать все классы реализующие этот интерфейс, с другой стороны получается более жесткая привязанность к конкретным классам.
Я не могу представить как пересмотреть данную архитектуру, т.к. в рамках задачи объекты ObjectTypeA, ObjectTypeB, ObjectTypeC связываются друг с другом внутри другого объекта ObjectCalculateVelocity и по сути своей для него они все одинаковы, т.к. предоставляют ему метод getVelocity() из интерфейса CalculatedVelocity.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я обрабатываю Post запрос с Json данными, как мне их добавлять в базу данных, чтобы была проверка, которая узнавала, есть ли в базе данных уже этот...
Как мне узнать существует ли такой файл, которому обращается программа или он занят другой программой? CreateFile возвращает только -1В CreateFile...
winapi, пытаюсь заполнить combobox строками но в них попадает только первая буква из списка, пытался вывести в консоль, выводится адрес первой буквы,как...
Возможно только через математическое выражение определить, есть ли в числе единица?