Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Arquitetura MVC - Model-View-Controller

From Wiki
Jump to: navigation, search
Article Metadata

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

Compatibilidade
Plataforma(s):
Symbian
S60 5th Edition

Artigo
Tradução:
Por maiconherverton
Última alteração feita por hamishwillee em 13 Aug 2013

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

This page was last modified on 13 August 2013, at 06:37.
296 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×