Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.11.2007, 19:10
beshan вне форума Посмотреть профиль Отправить личное сообщение для beshan Посетить домашнюю страницу beshan Найти все сообщения от beshan
  № 1  
Ответить с цитированием
beshan

Регистрация: Dec 2001
Адрес: Kiev
Сообщений: 91
По умолчанию Design patterns?

написал код загрузчика и вот уже третий день пытаюсь определицца к какому паттерну его отнести... я его отнес к Command (Behavioral)...

может есть у кого-то больше опыта по идентификации паттернофф... буду рад услышать ваше мнение по поводу моего кода и паттерна к которому он может относицца... заранее благодарю...

Код:
package com.util
{			
	import flash.display.MovieClip;
	import flash.events.Event;	
	import flash.events.ProgressEvent;
	import flash.events.IOErrorEvent;	
	
	//************ CLASS DECLARATION ************
	/*
	LoaderController class controls the loading process on the Command (Behavioral) design pattern.
	METHODS: 
	- getBytesLoaded - return bytesLoaded
	- getBytesTotal - return bytesTotal
	- progressLoader - displays process loading
	- completeLoader - change frame on root
	
	EVENTS: 
	rootLoaderInit - IE6 AS3 Preloader Events Failing and wait when finish initialization rootSymbol
	rootLoaderProgress
	rootLoaderComplete 
	rootLoaderError
	*/
	public class LoaderController
	{						
		private var root_mc:MovieClip;
		private var loader_mc:MovieClip;
		private var rootLabel:String;
		private var rootSymbol:String;
		private var returnFunction:Function;
		
		private var bytesLoaded:Number;
		private var bytesTotal:Number;
		private var bytesTrash:Number;
		
		//************ CONSTRUCTOR ************		
		public function LoaderController (_root_mc:MovieClip, _loader_mc:MovieClip, _rootLabel:String, _rootSymbol:String, _returnFunction:Function):void
		{
			root_mc = _root_mc;
			loader_mc = _loader_mc;
			rootLabel = _rootLabel;
			rootSymbol = _rootSymbol;
			returnFunction = _returnFunction;
			
			loader_mc.loader.text = "0 %";			
			loader_mc.loader_line.scaleX = 1;
			
			root_mc.addEventListener (Event.ENTER_FRAME, rootLoaderInit);	
			root_mc.loaderInfo.addEventListener (ProgressEvent.PROGRESS, rootLoaderProgress);
			root_mc.loaderInfo.addEventListener (Event.COMPLETE, rootLoaderComplete);
			root_mc.loaderInfo.addEventListener (IOErrorEvent.IO_ERROR, rootLoaderError);
		}
		
		//************ METHODS ************		
		public function getBytesLoaded ():Number
		{
			return bytesLoaded;
		}
		
		public function getBytesTotal ():Number
		{
			return bytesTotal;
		}
		
		private function progressLoader ():void
		{					
			var proc:Number = Math.floor(bytesLoaded/bytesTotal*100);			
			loader_mc.loader.text = proc +" %";			
			loader_mc.loader_line.scaleX = proc/100;
		}
		
		private function completeLoader ():void
		{
			root_mc.gotoAndStop(rootLabel); 								
		}		
		
		//************ EVENTS ************		
		private function rootLoaderInit (event:Event):void
		{	
			//IE6 AS3 Preloader Events Failing
			if (!(bytesTrash>1) && root_mc.loaderInfo.bytesTotal >1) 
			{				
				if (bytesLoaded == bytesTotal && bytesTotal>1)
				{					
					completeLoader ();	
				} 
				else 
				{				
					bytesLoaded = root_mc.loaderInfo.bytesTotal;
					bytesTotal = root_mc.loaderInfo.bytesLoaded;	
					progressLoader ();					
				}				
			}
			
			// Wait when finish initialization rootSymbol.
			if (root_mc[rootSymbol] != null)
			{				
				returnFunction();
				loader_mc.visible = false;				
				root_mc.removeEventListener(Event.ENTER_FRAME, rootInit);					
			}
		}
				
		private function rootLoaderProgress (event:ProgressEvent):void
		{			
			bytesLoaded = event.bytesLoaded;
			bytesTotal = bytesTrash = event.bytesTotal;			
			progressLoader ();
		}
		
		private function rootLoaderComplete (event:Event):void
		{
			completeLoader ();	
		}	
					
		private function rootLoaderError (event:IOErrorEvent):void
		{
			trace("ioErrorFunction (root): " + event);
		}	
	}
}
для справки:
Design patterns - шаблоны проектирования, предназначенны для оптимизации кода.
Используюцца либо на этапе проетирования системы либо во время рефакторинга/оптимизации уже написанного проекта. Для флеша можно применять либо для очень больших проектофф либо когда однотипные проекты задолбали и хочицца придумать для себя развлекуху )))
Как правило используецца либо на уровне самостоятельного класса, либо класса и взаимодействия с его наследниками...

Старый 22.11.2007, 19:27
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 2  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
расслабся и не думай об этом ) лучше бы изучил как правильно писать коменты ASDoc было бы полезнее )

Про паттерны полезно почитать и осмыслить что к чему, но не стоит останавливатся на точном следовании того или иного паттерна - все зависит он проекта!

И уж тем более не стоит пытаться готовый код подогнать под какое либо определение.
__________________
33 коровы

Старый 23.11.2007, 11:52
librio вне форума Посмотреть профиль Отправить личное сообщение для librio Найти все сообщения от librio
  № 3  
Ответить с цитированием
librio

Регистрация: Nov 2006
Сообщений: 134
Я могу понять, когда мы выбираем паттерн для решения определенной задачи.... Но искать паттерн под готовый код - это уже... хм... вобщем... да.
-Это из той же оперы, что писать юнит-тест к написанному и протестированному ручками коду
__________________
http://creationcomplete.com

Старый 23.11.2007, 12:48
beshan вне форума Посмотреть профиль Отправить личное сообщение для beshan Посетить домашнюю страницу beshan Найти все сообщения от beshan
  № 4  
Ответить с цитированием
beshan

Регистрация: Dec 2001
Адрес: Kiev
Сообщений: 91
по поводу комментариефф... тексты исчо деффачка транслятор будет проверять... а формат камментофф это шаблон клиента... вообще позиция клиента и мне не понятна но он хочет что бы ффсе классы были написанны "Java-style design pattern"... поэтому и получаецца что я свой код пишу годамми отточенными шаблонами но надо мои шалоны исчо как позицианировались относительно стандартных design pattern....

судя по вашим камментариям помощи я не дождусь )))))) ну да ладно...

Старый 23.11.2007, 14:01
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 5  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
По поводу оптимизации. Оптимизация всегда направлена на ухудшение кода в пользу его быстродействия.

Старый 23.11.2007, 14:05
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 6  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Цитата:
Сообщение от †‡Paladin‡†
По поводу оптимизации. Оптимизация всегда направлена на ухудшение кода в пользу его быстродействия.
Не совсем...1ый этап оптимизации - это рефакторинг для устранения дублирования кода, ненужных переменных, в некоторых случаях слияния нескольких маленьких классов в один, избавления от лишних циклов и т д...на этом этапе качество кода только повышается. А на последующем этапе, если всего этого не хватило, уже начинается ухудшение кода. До этого доходит далеко не всегда.
__________________
4am is time to rock

Старый 23.11.2007, 21:42
Dimchansky вне форума Посмотреть профиль Отправить личное сообщение для Dimchansky Посетить домашнюю страницу Dimchansky Найти все сообщения от Dimchansky
  № 7  
Ответить с цитированием
Dimchansky

Регистрация: Jul 2005
Сообщений: 225
Отправить сообщение для Dimchansky с помощью ICQ
откуда там упоминание о Command взялось вообще?
> controls the loading process...

я бы вообще не стал относить этот код к какому-либо типовому решению, но елси бы меня взяли за горло и вежливо попросили это сделать, то, скорее, это адаптер для загрузки чавото кудато
__________________
Dimchansky | Freelance

Старый 23.11.2007, 21:47
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 8  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Цитата:
Сообщение от DarkLight
Не совсем...1ый этап оптимизации - это рефакторинг для устранения дублирования кода, ненужных переменных, в некоторых случаях слияния нескольких маленьких классов в один, избавления от лишних циклов и т д...на этом этапе качество кода только повышается. А на последующем этапе, если всего этого не хватило, уже начинается ухудшение кода. До этого доходит далеко не всегда.
Устранение своих косяков трудно назвать оптимизацией.

Старый 23.11.2007, 22:42
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 9  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Цитата:
Сообщение от †‡Paladin‡†
Устранение своих косяков трудно назвать оптимизацией.
Это хорошо если своих И выбор неоптимального алгоритма - не косяк, т к не всегда можно точно оценить быстродействие на стадии проектирования
__________________
4am is time to rock

Старый 24.11.2007, 00:47
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 10  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Цитата:
Сообщение от DarkLight
Это хорошо если своих И выбор неоптимального алгоритма - не косяк, т к не всегда можно точно оценить быстродействие на стадии проектирования
Перечитай свой предидущий пост. Ты там говорил о чистке левых переменных помоему, а не выборе оптимального алгоритма. Вобщим моя позиция по поводу того, что использование паттернов не ведет к "оптимизации" кода остается неизменной.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.