Показать сообщение отдельно
Старый 29.07.2018, 23:05
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 12  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
СлаваRa, caseyryan, согласен, подход - дерьмо.

Цитата:
Не совсем понимаю что ты хочешь сделать, но если у тебя эти классы унаследованы от разных базовых классов, но свойства должно присутствовать обязательно, то почему ты не используешь интерфейсы?
Да они вообще ни от чего не унаследованы. В каждом - пачка свойств, а также сеттеров/геттеров. Возможно, когда добавятся какие-то методы обработки, обязательные для всех компонентов, тогда и потребуются интерфейсы для пущей уверенности.

Давайте я попробую привести ещё пример и задать вопрос.

Изначально в классе Character были прописаны свойства из "досье", которые остаются неизменными (сила, интеллект), свойства, отслеживающих текущие параметры (энергия, ХП), скиллы. От такой огромной простыни (сами свойства, сеттеры/геттеры, методы обработки) у меня класс сильно "распух". Чтобы всё это хозяйство организовать, придумалось раскидать свойства не нескольким новым классам. Но возникла новая проблема. У меня происходит много обращений за значениями свойств, переданных как параметры. Наиболее типичный случай - класс проверки условий доступности игровых действий. Вот его пример:

Код AS3:
public class ACPropEquality extends ACEntity 
	{
		private var _value: * ; 
 
		public function ACPropEquality(newOwnerID: String, newPropID: String, newValue: *) 
		{
			super(newOwnerID, newPropID);
			_value = newValue;
		}
 
		override public function testCondition(action:ActionEntity) : Boolean 
		{
			super.getOwner(action);
			return (_owner.getProp(_propID) == _value);
		}
	}
Получается, что под newPropID может быть свойство из досье, текущий параметр или скилл. Я рассуждал так, что другие классы не должны "знать" и "вникать", где конкретно в классе персонажа "живёт" запрашиваемый параметр, а просто передать ID свойства и получить назад текущее значение. В этом случае встаёт вопрос, как в самом Character идентифицировать, где искать свойство под полученным ID. Результат - как видели выше.

Или я вас не правильно понял, и главный объект критики - это подход, при котором запросы текущих значений свойств сделаны через их строковые идентификаторы?
__________________
Не сломано - не чини!