Показать сообщение отдельно
Старый 21.03.2015, 18:45
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 5  
Ответить с цитированием
OlmerDale

Регистрация: Jan 2015
Сообщений: 113
Вот взять для примера Sprite. Он узел-контейнер. В него можно добавить несколько спрайтов, а потом его с его детьми добавить в другой. Все спрайты имеют ссылку на родителя.

То что я делаю немного похоже на спрайт. Я делаю контейнер, который реализует интерфейс INode ( его можно сравнить с абстракцией DisplayObject ) который добавляет в себя такие же контейнеры и объекты которые не могут быть контейнерами, но тоже реализуют INode. Это нечто -

Код AS3:
package recursive 
{
	public class INode 
	{
 
		public function INode() 
		{
			function next():INode
			function prev():INode
		}
 
	}
 
}
 
 
// АБСТРАКТНЫЙ КЛАСС implements INode
package recursive 
{
	public class AbstractClass implements INode
	{
		public function AbstractClass() 
		{
 
		}
 
	}
 
}
 
package recursive 
{
	public class SomeCustomClass extends AbstractClass
	{
		public function SomeCustomClass() 
		{
			// это класс можно сравнить по своей важности
			// например со Sprite
		}
	}
 
}
 
package recursive 
{
	public class CustomClass extends AbstractClass
	{
		public var nodes:INode
 
		public function CustomClass() 
		{
			// это класс можно сравнить по своей важности
			// например со Sprite
		}
 
		public function setNode(node:INode):void
		{
			this.nodes.next = node;
		}
 
	}
 
}
И эту архитектуру можно было бы с лихвой оправдать схожестью с DO, DOC, Sprite и Shape...
Но в DOC, как мне кажется, все чилды хранятся, хоть и в V<DO>, хоть и типизированном, но все же массиве, который сам состоит из нод. А у меня получается и DO и ещё и нода.

Если я не найду доказывающего, что это не нарушит ООР, то и делать так не буду. Расчитываю на Вашу помощь.