Descubrimiento MVC Pixlib

Aquí está un breve artículo que describe la organización de un proyecto Pixlib MVC 3.0.

No es una coincidencia que el patrón MVC se divide en varios idiomas y está presente en el corazón de la estructura de aplicaciones más orientadas. Cortar un proyecto como modelo-vista-controlador ofrece una gran flexibilidad y por lo tanto un ahorro considerable de tiempo en el mantenimiento y evolución de una aplicación.

Breve resumen del patrón Modelo-Vista-Controlador

El MVC es un patrón de diseño que incluye las clases de una aplicación en 3 grupos:
• el grupo de modelos, que es el código utilizado para manejar y manipular los datos;
Vistas del grupo, que incluye todo lo necesario para la interfaz con la que el usuario va a interactuar;
• el grupo de controladores, que procesa los eventos y notificar a las autoridades competentes de cualquier cambio.

Aunque la organización muy formal de un proyecto MVC ofrece una estructura limpia y sólida. Más detalles sobre el artículo de Wikipedia: Modelo-Vista-Controlador

El MVC Pixlib también puede ser llamado MVC + FC (Modelo-Vista-Comando + frontController) ya que la parte central está compuesta de un frontController y un conjunto de controles.

El MVC es global en Pixlib

Organizado en torno a tres localizadores globales basadas en una lógica de Singleton ( Singleton (patrón de diseño) ), el MVC "hizo Pixlib" alcanza nivel mundial cada elemento de la solicitud.

Cada localización es un agregador:

  • Los agregados PXModel PXModelLocator;
  • los agregados PXViewLocator PXView;
  • agregados del PXFrontController PXCommandes.
PXView, PXModel y localizadores.

Los puntos de vista y modelos de grupo funciona de la misma manera.
PXView y PXModel son interfaces que han implementado un resumen ( abstract class ) (PXAbstractView y PXAbstractModel) que se ampliará en un uso práctico.

Así pues, en la práctica, cada vista se debe extender la clase PXAbstractView;

  MyView extends PXAbstractView public class MyView extiende PXAbstractView
 {
	 MyView ( viewName : String ) public function MyView (viewName: String)
	 {
		 null , viewName ) ; super (null, viewName);
	 }
 } 

y cada modelo debe extenderse clase PXAbstractModel.

  MyModel extends PXAbstractModel MyModel clase pública se extiende PXAbstractModel
 {
	 MyModel ( modelName : String ) MyModel función pública (modelName: String)
	 {
		 null , modelName ) ; super (null, modelName);
	 }
 } 

Ambas clases tienen como argumentos en el constructor: el propietario que dejemos de momento nulo (para más información, por favor visite: La noción de plugin, múltiples Pixlib MVC ) y el nombre que se utiliza para identificador único.

Cuando estas instancias de clases, el argumento nombre se utilizará como identificador único por el localizador (PXModelLocator para MyModel y PXViewLocator para MyView). Esto nos permitirá recuperar los cuerpos de los modelos y las vistas desde cualquier punto de la aplicación.

  / / Localizadores de almacenamiento implícitas hechas al crear instancias
 "idUnique" ) ; nueva MyModel ("idUnique");
 "idUnique" ) ; nueva MyView ("idUnique");

 / / Lo que permite la recuperación de los cuerpos a nivel mundial.
 . locate ( "inUnique" ) ; // retourne l'instance de MyModel PXModelLocator getInstance () localización ("inUnique") .. / / Devuelve la instancia de MyModel
 . locate ( "inUnique" ) ; // retourne l'instance de MyView PXViewLocator getInstance () localización ("inUnique") .. / / Devuelve la instancia de MyView 
PXCommandes y PXFrontController

Ligeramente diferente PXFrontController puede enlazar comandos a un identificador y ejecutar de acuerdo a nuestras necesidades.
Como modelos y puntos de vista, las órdenes de un PXCommand Resumen PXAbstractCommand interfaz e implementación que se extenderá a utilizar.

El código del núcleo de un comando es:

  MyCommand extends PXAbstractCommand public class MyCommand PXAbstractCommand
 {
	 onExecute ( event : Event = null ) : void OnExecute anular la función de protección (event: Event = null): void
	 {
		 / / Notificación acerca de la ejecución como el control asíncrono!
		 fireCommandEndEvent ();
	 }
 } 

Para utilizar a través del controlador, hay que añadir MyCommand PXFrontController, utilizando EventType como identificador único.

  PXFrontController = PXFrontController . getBaseController ( ) ; controlador var: PXFrontController PXFrontController getBaseController = ().
 "onCommand" , MyCommand ) ; controlador pushCommandClass ("onCommand" MyCommand).; 

Esto nos permitirá desde cualquier lugar, iniciar la ejecución del comando pasando frontController un evento que EventType como el identificador de nuestro control.

  . handleEvent ( new Event ( "onCommand" ) ) ; PXFrontController getBaseController () handleEvent (nuevo evento ("onCommand.")).; 

Tenga en cuenta que los comandos de Pixlib son asíncronas, lo que requiere una llamada al método fireCommandEndEvent () para indicar el final de sus actuaciones.

¿Quién se comunica con quién?

Ahora que usted sabe y obtener modelos instanciar, opiniones y controles en Pixlib, ve cómo organizar todas estas personas en una sola aplicación.

Modelos con vistas

Acoplamiento débil es una palabra clave en un proyecto Pixlib.
Es por esta razón por la que la organización de la comunicación entre los modelos y las vistas se gestiona desde fuera.

  PXView = new MyView ( "MyView" ) ; var vista: PXView = new MyView ("MyView");
 MyModel = new MyModel ( "MyModel" ) ; var modelo: MyModel = new MyModel ("MyModel");
 view ) ; modelo addListener (ver).; 

Los modelos no conocen los puntos de vista y viceversa.
La comunicación pasa a través del sistema de eventos y notificación de cambios.

En la práctica, cuando un modelo sufre un cambio, se lo notifica.

  MyModel extends PXAbstractModel MyModel clase pública se extiende PXAbstractModel
 {
	 change ( ) : void cambio de función pública (): void
	 {
		 "Model change" , this ) ; registro de depuración ("Modelo de Cambio", this).;
		 PXStringEvent ( "onChange" , this , "ma nouvelle String" ) ) ; notifyChanged (nueva PXStringEvent ("onChange", esto, "mi nueva cadena"));
	 }
 } 

Los puntos de vista o suscribirse para recibir este modelo de notificación y reaccionar en consecuencia.

  MyView extends PXAbstractView public class MyView extiende PXAbstractView
 {
	 onChange ( event : PXStringEvent ) : void onChange public function (event: PXStringEvent): void
	 {
		 "Model send me new string " + event . value , this ) ; debug log ("Model me envía nueva cadena" + valor del evento, esto.).;
	 }
 } 
Vistas a los controles

Aplicaciones de punto de entrada principal, las vistas son generalmente responsables de la ejecución de las órdenes.
A través de método firePrivateEvent, las vistas pueden ejecutar cualquier comando en el agregado PXFrontController VMC.

  / / Aggregation "MyCommand" comando en el PXFrontController
 PXFrontController = PXFrontController . getBaseController ( ) ; controlador var: PXFrontController PXFrontController getBaseController = ().
 "onCommand" , MyCommand ) ; controlador pushCommandClass ("onCommand" MyCommand).;
 / / Ejecución desde MyCommand vistas
 Event ( "onCommand" ) ) ; firePrivateEvent (nuevo evento ("onCommand")); 
Comandos para los modelos o vistas

Como administradores de la aplicación, el comando para cambiar los puntos de vista, los modelos o la realización de nuevos pedidos.

  CheckCommand extends PXAbstractCommand public class CheckCommand PXAbstractCommand
 {
	 onExecute ( event : Event = null ) : void OnExecute anular la función de protección (event: Event = null): void
	 {
		 / / Modificar una plantilla
		 ) . release ( ) ; ("MyModel") la liberación getModel ().;
		 / View / Cambio
		 ) . show ( ) ; getView ("MyView") show ().;
		 / / La ejecución de otro comando
		 Event ( "onChange" ) ) ; firePrivateEvent (nuevo evento ("onChange"));

		 fireCommandEndEvent ();
	 }
 } 

En resumen:

  • MVC en Pixlib es global;
  • Cada grupo de clase tiene un localizador (PXModelLocator para los modelos PXViewLocator para las vistas, PXFrontController para los controles);
  • modelos de notificar los puntos de vista;
  • Vistas a la puesta en marcha de las órdenes;
  • los comandos para modificar las plantillas y / o puntos de vista, así como la aplicación de nuevas órdenes;

Para continuar:

Feliz con codding Pixlib!

Participación

Acerca PixTeam

El Equipo Pixlib (formación, consultoría y desarrollo de equipos)
Esta entrada fue publicada en Core , Marco , Tutorial . Guarda el enlace permanente .

One Response to Descubrimiento MVC Pixlib

  1. Pingback: El concepto de plugin, múltiples MVC Pixlib | Pixlib Flash Platform Framework

Los comentarios están cerrados.