Я создал шаблон фабрики для создания своих объектов, но каждый из объектов несколько отличается, и я хочу, чтобы они реализовали разные методы, с моей текущей настройкой я должен объявить все методы в интерфейсе и в последующих классах объектов, как я могу обойти это?Проблемы с интерфейсами и FactoryPattern
Это пример структуры
класс еды
public class Food extends MyObjects implements MyActiveObject, {
public Food(String name, Coordinates coordinates, int size, Color color) {
super(name, coordinates, size, color);
}
}
Травоядным класс
public class Herbivore extends Entity implements MyActiveObject {
public Herbivore(String name,Coordinates coordinates, int size, Color color){
super(name, coordinates, size, color);
}
}
интерфейс
public interface MyActiveObject extends EntityInterface {
public Coordinates getCoordinates();
etc...
}
Фабрика класса
public class MyActiveObjectFactory {
public MyActiveObject createObject(String objectType, int objectCount, int x, int y, int scale){
if(objectType == null){
return null;
}else{
if(objectType.equalsIgnoreCase("HERBIVORE")){
return new Herbivore();
}
else if(objectType.equalsIgnoreCase("CARNIVORE")){
return new Carnivore();
}
else if(objectType.equalsIgnoreCase("FOOD")){
return new Food();
}
else if(objectType.equalsIgnoreCase("DRINK")){
return new Drink();
}
}
return null;
}
Создание объекта
MyActiveObject activeObject = activeObjectFactory.createObject("Herbivore", activeObjectCount, x, y, scale);
Ive удалены любые unessary код, чтобы сэкономить место, что им пытаются сделать, это магазин продуктов питания и травоядное как ActiveObject в массиве, но я хочу быть в состоянии вызвать разные методы для каждого из них, я не могу изменить их на абстрактный класс из-за наследования, так что все идеи, может ли кто-нибудь помочь?
Спасибо заранее
Я не уверен, что это решит проблему, шаблон завод использует интерфейс для того, чтобы работать, который означает, что я должен наследовать все методы, единственный способ обойти это я нашел, чтобы использовать абстрактную модель фабрики разделить интерфейсы и разделить разные объекты в свои собственные списки (не то, что я хотел сделать), но я не могу найти способ преодолеть эту проблему, спасибо за ваш пост, хотя всегда ценю помощь :-) –
Если ваша проблема заключается в том, что интерфейс, который вы используете, имеет сигнатуры методов, которые не нужны в классах, а затем см. мое второе обновление. Если это не проблема, я затрудняюсь понять природу вашего вопроса. В таком случае вы могли бы привести более подробный пример проблемы? – TommCatt