×
Namespaces

Variants
Actions
Revision as of 09:55, 17 August 2012 by hamishwillee (Talk | contribs)

Arquitetura MVC - Model-View-Controller

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Exemplo de código
Testado com
Aparelho(s): Nokia N95

Compatibilidade
Plataforma(s): All Java ME enabled Devices
Symbian
S60 5th Edition

Artigo
Palavras-chave: org.puremvc.java, org.puremvc.java.demos.j2me.login'
Tradução:
Por maiconherverton
Última alteração feita por hamishwillee em 17 Aug 2012

Contents

Introdução

O padrão MVC (Model-View-Controller) é um padrão arquitetural para a engenharia de software. O padrão permite que o programador possa separar a interface do usuário (camada de apresentação), os dados do aplicativo e lógica do negócio tornando muito mais fácil para manter o código e acomodar as mudanças necessárias.

  • Model - O modelo é uma representação de dados utilizado especificamente em um aplicativo.
  • View - A interface de um aplicativo. Ela torna o modelo de exposição ou de interação.
  • Controller - Manipula eventos de interação com o usuário e, normalmente, invoca as mudanças no modelo.

PureMVC

PureMVC é uma fonte livre, aberta, framework leve para criação de aplicativos baseados na Model-View-Contoller. Ele é suportado por muitas linguagens, incluindo Java e pode ser implementado em um aplicativo Java ME. Visite http://www.puremvc.org para aprender sobre a estrutura, melhores práticas e para baixar a versão mais recente. PureMVC também está disponível para Python.

Usando PureMVC com Java ME

PureMVC é usado para construir a base de um pedido em forma bem estruturada. Isso permite que o programador facilmente tenham os aplicativos que eles estão construindo para muitos dispositivos e plataformas. Também torna mais fácil de manter, ampliar e alterar o projeto.

Download the example Login application.

Este exemplo pode ser utilizado como base em qualquer projeto Java Mobile. Atualmente, o aplicativo usa a versão 0.2 do Java portátil. A PureMVC é uma rápida visão geral de como alguns quadros operam com o Login demonstrativo. Para obter uma plena compreensão do PureMVC visite o site e estude a muito a documentação. Os exemplos estão escritos em ActionScript 3, mas a teoria se aplica a todas as linguagens suportadas.

O framework puremvc trabalha com 4 fatores.

  • O Modelo '(Model)'
  • A Visualização '(View)'
  • O Controle '(Controller)'
  • A Fachada '(Facade)'

Todos os pedidos de cemeço para a fachada ApplicationFacade. É o ponto central de comunicação para o framework.

private ApplicationFacade facade = ApplicationFacade.getInst();
...
protected void startApp()throws MIDletStateChangeException
{
this.facade.startup(this);
}
...

ApplicationFacade.java

package org.puremvc.java.demos.j2me.login;
import org.puremvc.java.patterns.facade.Facade;
import org.puremvc.java.patterns.observer.Notification;
import org.puremvc.java.demos.j2me.login.controller.StartupCommand;
import org.puremvc.java.demos.j2me.login.controller.ProcessLogin;
import org.puremvc.java.demos.j2me.login.LoginExample;
public class ApplicationFacade extends Facade
{
public static final String STARTUP = "startup";
public static final String LOGIN = "login";
public static final String SUBMIT_LOGIN = "submitLogin";
public static final String LOGIN_SUCCESSFUL = "loginSuccessful";
public static final String LOGIN_FAIL = "loginFail";
public static final String MAIN = "main";
 
//Startup command notifications
public static final String PREP_MODEL = "prepModel";
public static final String PREP_VIEW = "prepView";
 
private static ApplicationFacade instance = null;
 
public static LoginExample midlet;
 
public static ApplicationFacade getInst()
{
if(instance == null)
{
instance = new ApplicationFacade();
}
 
return instance;
}
 
protected void initializeController()
{
super.initializeController();
 
registerCommand(STARTUP, StartupCommand.class);
registerCommand(SUBMIT_LOGIN, ProcessLogin.class);
}
 
public void startup(LoginExample midlet)
{
this.midlet = midlet;
notifyObservers(new Notification(STARTUP, null, null));
}
}

Comunicação através do framework, registrando comandos, mediadores e proxies.

ApplicationFacade.java

registerCommand(SUBMIT_LOGIN, ProcessLogin.class);

PrepViewCommand.java

this.facade.registerMediator(new LoginScreenMediator());

PrepModelCommand.java

this.facade.registerProxy(new ItemDataProxy());

Cada tela de interface do usuário tem um mediador ligado a ele. O mediador interage com a interface do usuário e do framework. Mediadores respondem aos apelos por registar um interesse em uma notificação de chamadas e lidar com todas as chamadas através do método handleNotification.

LoginScreenMediator.java

public String[] listNotificationInterests()
{
return new String[] {ApplicationFacade.LOGIN, ApplicationFacade.LOGIN_FAIL};
}
 
 
 
public void handleNotification(INotification note)
// As variáveis podem ser repassadas através de nota INotification.
{
if(note.getName().equals(ApplicationFacade.LOGIN))
{
ApplicationFacade.midlet.fetchDisplay().setCurrent(getLoginScreen());
}
else if(note.getName().equals(ApplicationFacade.LOGIN_FAIL))
{
getLoginScreen().loginFail();
 
}
}

Os mediadores também podem fazer uma chamada fora do framework usando facade.notifyObservers.

...
this.facade.notifyObservers(new Notification(ApplicationFacade.SUBMIT_LOGIN, details,
null));

Nota: Os detalhes são uma matriz de cadeia. Qualquer variável pode ser repassada através de uma notificação

Um controle de listens são chamados quando ele é registrado.

registerCommand(SUBMIT_LOGIN, ProcessLogin.class);

Os dados podem ser armazenados usando um objeto de valor (ItemDataVO.java) e acessado através de um proxy (ItemDataProxy.java)

Objetos de valor podem ser preenchidos e adicionados a um proxy, da seguinte forma.

ProcessLogin.java

//Adicionar alguns objetos ItemDataVO usando proxy
ItemDataProxy itemProxy = (ItemDataProxy)facade.retrieveProxy(ItemDataProxy.NAME);
for(int i=0; i<url.length;i++)
{
ItemDataVO item = new ItemDataVO(url[i], data[i]);
itemProxy.addItem(item);
}

Novamente, isto é apenas uma breve visão geral do framework PureMVC. http://www.puremvc.org Visite e leia a documentação para entender completamente o uso dele. Também o estudo sobre 'codebase demo Login'. O Demo é gratuito para você utilizar, alterar e criar em algo sobre ele. Por favor, ajude a comunidade, contribuindo com PureMVC de qualquer forma seja inovadora que melhore-o ou você pode conhecer a utilização deste framework com Java ME. Você também pode ajudar, fornecendo mais demos e tutoriais. Espero que você goste de criar uma melhor estrutura e mais fácil de manter as suas aplicações que utilizam o framework PureMVC.


Link interno

144 page views in the last 30 days.
×