Показать сообщение отдельно
Старый 09.08.2013, 11:08
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 59  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Код AS3:
Дело в том, что я тоже хочу сделать один большой загрузчик
LoaderMax
BulkLoader
И много других, достаточно загуглить. Не зачем велосипеды изобретать.

Добавлено через 10 минут
Цитата:
В интерфейсе между детьми я могу увидеть некоторый смысл
Пример рас:
Главное приложение оболочка грузит в себя пачку плагинов. Каждый плагин это отдельный проект. Наследоваться от какого-то базового класса плугина глупо и неэффективно, будет куча конфликтов. Интерфейс - ок. В итоге родителю абсолютно пофигу как там реализован плугин, он будет работать с его интерфейсом.

Пример два(не совсем родитель-дети, но без интерфейса плохо):
Паттерн "стратегия". Например какой-то поиск пути несколькими методами, либо какая-то квестовая система, где одна задача решается пачкой методов.
Для поиска пусти у нас есть интерфейс ИРасчетПути. В котором допустим есть метод getPath(cells:Array):Array - принимает массив ячеек карты, выдает массив ячеек по которым юнит может пройти. Далее мы реализовываем несколько методов расчета и встегиваем в нужный момент в нужное место в каком-то манагере.
Для квестовой системы так же. Есть какой-то IConditionChecker.
Например такой(из моего реального проекта):
Код AS3:
	[Event(name = "complete", type = "flash.events.Event")]
	[Event(name = "change", type = "flash.events.Event")]
	public interface IConditionChecker extends IEventDispatcher
	{
		//=====================================================================
		//	PUBLIC
		//=====================================================================
		function init(subtype:String, num:int, data:String, delta:Boolean):void;
		function update(status:int, data:BaseProtoData):void;
		function setCounter(counter:int):void;
		//=====================================================================
		//	ACCESSORS
		//=====================================================================
		function get commandId():int;
 
		function get complete():Boolean;
 
		function get count():int;
		function get needCount():int;
	}
В итоге мы реализуем подсчет условий квеста одинаково, но реализация подсчета отличается очень сильно. Считать нужно ВСЁ. От заработанного пользователем бабла, до кол-ва кликов, до выполненных каких-то иных игровых задач, типа построить дом такой-то.

Пример три, паттерн "команда". Интерфейс ICommand реализуется как вздумается. Можно обойтись базовой командой и ее наслоедовать, и часто это удобнее чем интерфейс, но абсолютно не всегда.
__________________
Кто к нам с чем для чего - тот у нас того от того.


Последний раз редактировалось Dukobpa3; 09.08.2013 в 12:05.