Тема: Хорошее MVC
Показать сообщение отдельно
Старый 16.10.2010, 05:57
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 212  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Котяра, на мой взгляд тоже: с двумя интерфейсами - перебор. Вот можно сделать так (через нэймспейсы):
Model.as
Код AS3:
package 
{
	public class Model
	{
		public function Model()
		{
			super();
		}
 
 
 
		protected namespace _nsSetter;
 
		protected var _myProperty:String;
 
 
 
		public function getNsSetter( controller:IController ):Namespace
		{
			if( !controller )
				return null;
 
			return _nsSetter;
		}
 
 
		public function get myProperty():String
		{
			trace( "get myProperty" );
 
			return _myProperty;
		}
		_nsSetter function set myProperty( val:String ):void
		{
			trace( "set myProperty" );
 
			if( val == _myProperty )
				return;
 
			_myProperty = val;
		}
 
	}
}
А в контроллере, для примера, что-то вроде:
Код AS3:
var m:Model = new Model();
var nsSetter:Namespace = m.getNsSetter(this);
 
m.myProperty; // read
m.nsSetter::myProperty = "lalala"; // write
В getNsSetter( controller:IController ) - IController для примера. Можно и не для контроллера сделать.

Или вообще переменной _myProperty назначить не protected, а сразу _nsSetter нэймспейс. А сеттер myProperty и вовсе убрать. Тогда в контроллере нужно будет работать через неймспейс с переменной, а в остальных классах - только с геттером.


Последний раз редактировалось i.o.; 16.10.2010 в 06:30.