вот мой вопрос:Java - Является ли делегирование хорошим решением в этом случае?
У меня огромный класс (HugeClass), и я хотел разбить его на несколько небольших классов (LittleClass1, LittleClass2, ...). Я слышал о делегации. Звучит неплохо, но я думаю, что это не может работать в моем случае. Действительно, мои маленькие классы нужны некоторые из атрибутов HugeClass:
public class HugeClass
{
// Attributes
private Object object1;
private Object object2;
private Object object3;
...
private Object objectN;
// Delegation 1
private LittleClass1 little1 = new LittleClass1();
// Function delegated in the LittleClass1
public void delegated1()
{
little1.delegated1();
}
}
Вот пример класса Делегирование:
public class LittleClass1
{
public LittleClass1()
{
}
public void delegated1()
{
// Here, I need object1, object3, and more to work !
}
}
Количество атрибутов, необходимых для функции delegated1 может быть большим. Поэтому я считаю, что использование конструктора LittleClass1 не очень удобно.
И поскольку LittleClass1 переопределяет только один метод HugeClass, я не думаю, что LittleClass1 должен расширять HugeClass.
У вас есть идеи по решению? Использование другого шаблона?
Спасибо!
Update
делегированные функции может понадобиться не только переменные экземпляра, но и функции экземпляра:
public class LittleClass2
{
public LittleClass2()
{
}
public void delegated2()
{
// I need object2 and delegated1 to work !
}
}
Давать HugeClass конструктору может решить эту проблему. Но это хорошее решение?
Было бы неплохо иметь больше знаний о 'HugeClass' и его обязанностей. – dantuch
Вы очень верны в заявлении «Я не думаю, что LittleClass1 должен расширять HugeClass». Мало того, что это будет неправильное использование наследования, но оно также не сработает. Что касается решения, дьявол находится в деталях. Поэтому, пожалуйста, предоставьте их. –
HugeClass содержит все методы взаимодействия с API веб-сайта. В этом случае атрибутами являются, например, переменные API, такие как токен, некоторый заголовок, некоторые заглушки и некоторые особенности программы. – bill0ute