Découverte du MVC dans Pixlib

Voici ONU artículo petit organización l'décrit qui MVC d'un projet Pixlib 3.0.

Ce n'est pas hasard ONU, si le patrón MVC est dans disminución de nombreux langages et présent dans le coeur de la plupart des aplicativo marco Orientes. La Découpe d'un projet sous la forme Modèle-Vue-Contrôleur apporté beaucoup de souplesse et donc ONU ganancia de temps no négligeable dans le maintien et l'aplicación d'une evolución.

Courte synthèse sur le patrón Modèle-Vue-Contrôleur

Le MVC est modèle de concepción qui regroupe les clases de aplicaciones d'une ONU en 3 groupes:
• Le Groupe des Modèles, qui corresponde código au permettant de Gerer et Manipuler les données;
• Le Groupe des Vues, ​​qui rassemblé tout ce qui sert d 'interfaz avec l'utilisateur laquelle va Interagir;
• Le Groupe des controleurs, qui traite les événements et qui notific de Droit des changements éventuels.

Bien Que très formelle, organización l'd'un projet sous forme de MVC estructura une offre propre et solide. Plus de détails sur l'artículo de Wikipedia: Modèle-Vue-Contrôleur

Le MVC dans Pixlib peut être aussi appelé MVC + FC (Modelo-Vista-Comando + frontController), vehículo de la partie contrôleur est composée d'un frontController et d'un conjunto de Commandes.

Le MVC dans est globales Pixlib

Organisé autour de 3 localizadores globaux, bases sur une logique de Singleton ( Singleton (patrón de concepción) ), le MVC «hizo Pixlib» Permet d'atteindre de manière globale chaque élément de l'aplicación.

Chaque Localizador est agrégateur ONU:

  • Le PXModelLocator agrégé les PXModel;
  • Le PXViewLocator agrégé les PXView;
  • le PXFrontController agrégé les PXCommandes.
PXView, PXModel et leurs localizadores.

Le groupe des vues et des modèles fonctionne de la même manière.
PXView et PXModel sont des las interfaces, possèdent qui implementación de junio abstraite ( Classe abstraite ) (PXAbstractView et PXAbstractModel) Que l'on va Etendre Pour en faire concret uso ONU.

Donc en plática, chaque vue doit Etendre la classe PXAbstractView;

  MyView extends PXAbstractView public class MyView extiende PXAbstractView
 {
	 MyView ( viewName : String ) función pública MyView (viewName: String)
	 {
		 null , viewName ) ; super (nula, viewName);
	 }
 } 

et chaque modèle doit Etendre la classe PXAbstractModel.

  MyModel extends PXAbstractModel public class MyModel extiende PXAbstractModel
 {
	 MyModel ( modelName : String ) función pública MyModel (ModelName: String)
	 {
		 null , modelName ) ; super (nula, ModelName);
	 }
 } 

Ces deux clases de argumentos comme prennent dans le constructeur: le propietario de Que laisserons nous pour le momento un nulo (pour en savoir plus rendez-vous sur: La noción de Plugin, le multi-MVC dans Pixlib ), et le nombre qui servira d ' identifiant único.

Lors de l'instanciation de clases ces, l'nombre de argumento va être utilisé comme identifiant par único le localizador (PXModelLocator verter MyModel et PXViewLocator verter MyView). Ce qui nous va permettre de récupérer les casos De modèles et de vues depuis n'importe quel endroit de aplicación notre.

  // Stockage implicite dans les faits localizadores lors de l'instanciation
 "idUnique" ) ; nuevo MyModel ("idUnique");
 "idUnique" ) ; nuevo MyView ("idUnique");

 // Qui Permet une récupération des instancias de manière globale.
 . locate ( "inUnique" ) ; // retourne l'instance de MyModel . PXModelLocator getInstance () busque ("inUnique."); // Retourne l'instancia de MyModel
 . locate ( "inUnique" ) ; // retourne l'instance de MyView . PXViewLocator getInstance () busque ("inUnique."); // Retourne l'instancia de MyView 
PXCommandes et PXFrontController

Différent légèrement, PXFrontController Permet De Lier des commandes una ONU identifiant et de les ejecutor selon cne besoins.
Tout comme les modèles et les vues, les commandes ont une interfaz PXCommand et une implementación Abstraite PXAbstractCommand qu'il Faudra Etendre pour l'utiliser.

Le código de la base d'une commande est donc:

  MyCommand extends PXAbstractCommand public class MyCommand extiende PXAbstractCommand
 {
	 onExecute ( event : Event = null ) : void anular onExecute función protegida (evento: Evento = null): void
	 {
		 // Notificación de fin d'ejecución, asynchrones commande coche!
		 fireCommandEndEvent ();
	 }
 } 

Pour pouvoir l'utiliser vía le contrôleur, Devons nous Ajouter au MyCommand PXFrontController, en utilisant EventType comme identifiant único.

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

Ce qui nous permettra depuis n'importe quel endroit de lancer l'exécution de la commande en passant au frontController ONU événement qui comme un EventType l'identifiant de commande notre.

  . handleEvent ( new Event ( "onCommand" ) ) ; . PXFrontController getBaseController () handleEvent (nuevo Evento ("bajo demanda").); 

À Noter de Que les commandes dans asynchrones sont Pixlib, ce qui obligar d'appeler la méthode fireCommandEndEvent () verter notificador La Fin de leurs ejecuciones.

Qui comunicado avec qui?

Maintenant que vous savez instancier et récupérer les Modèles, vues et au sein de commandes Pixlib, Voyons comentario organizador ce monde tout petit aplicación dans une.

Des modèles vers les vues

Le couplage faible est un mot maître des dans projet Pixlib.
C'est verter cette razón Que l'organización de la comunicación entre les modèles et les vues depuis l'est Geree extérieur.

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

Les modèles ne pas les connaissent vues et viceversa.
La comunicación a través de tilice passe le système événementiel et la notificación de changement.

En pratique, lorsqu'un Subit modèle ONU changement, il le notific.

  MyModel extends PXAbstractModel public class MyModel extiende PXAbstractModel
 {
	 change ( ) : void cambio de función pública (): void
	 {
		 "Model change" , this ) ; registrador de depuración ("cambio de modelo", este).;
		 PXStringEvent ( "onChange" , this , "ma nouvelle String" ) ) ; notifyChanged (nuevo PXStringEvent ("onChange", esta "nouvelle ma String"));
	 }
 } 

La ou les vues abonnées au modèle notificación cette reçoivent et réagissent en consecuencias.

  MyView extends PXAbstractView public class MyView extiende PXAbstractView
 {
	 onChange ( event : PXStringEvent ) : void función pública onChange (evento: PXStringEvent): void
	 {
		 "Model send me new string " + event . value , this ) ; . registrador de depuración ("enviar Modelo mí nueva cadena" + evento valor, esto.);
	 }
 } 
Des vues vers les commandes

Punto principal d'entrée des aplicaciones, les vues sont En General à l'origine de l'ejecución des commandes.
Grâce à la méthode firePrivateEvent, les vues peuvent exécuter n'importe Quelles commandes agrégées sur le PXFrontController du MVC.

  // Agrégation de la commande «MyCommand» sur le PXFrontController
 PXFrontController = PXFrontController . getBaseController ( ) ; controlador var: PXFrontController = PXFrontController getBaseController ();.
 "onCommand" , MyCommand ) ; . controlador pushCommandClass ("bajo demanda", MyCommand);
 // Exécution de MyCommand une vue depuis
 Event ( "onCommand" ) ) ; firePrivateEvent (nuevo Evento ("bajo demanda")); 
Les commandes vers les modèles ou les vues

Étant les gestionnaires de l'aplicación, les commandes permettent de modificador des vues, des modèles ou l'Ejecución De nouvelles commandes.

  CheckCommand extends PXAbstractCommand public class CheckCommand extiende PXAbstractCommand
 {
	 onExecute ( event : Event = null ) : void anular onExecute función protegida (evento: Evento = null): void
	 {
		 // Modificación d'un modèle
		 ) . release ( ) ; getModel ("MyModel") liberación ().;
		 // Modificación d'une vue
		 ) . show ( ) ; getView ("MyView") show ().;
		 // Ejecución d'une autre commande
		 Event ( "onChange" ) ) ; firePrivateEvent (nuevo Evento ("onChange"));

		 fireCommandEndEvent ();
	 }
 } 

En resumen:

  • Le MVC dans Pixlib est mundial;
  • chaque groupe de classe possédé ONU Localizador (PXModelLocator pour les modèles, PXViewLocator pour les vues, PXFrontController pour les commandes);
  • les modèles notifient les vues;
  • les vues lancent des commandes;
  • les commandes permettent de modificador les modèles et / ou les vues, ainsi Que l'exécution de nouvelles commandes;

Vierta continuador:

Codding feliz con Pixlib!

Esta entrada fue publicada en Core , Marco , Tutorial . Guarda el enlace permanente .

Una respuesta a Découverte du MVC dans Pixlib

  1. Pingback: La noción de Plugin, le multi-MVC dans Pixlib | Marco Pixlib plataforma Flash

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">