Iniciando com Cairngorm – Parte 1
Flex / Cairngorm Fevereiro 21st, 2008Falei sobre Cairngorm 2,2 no Flex Max Bootcamp no decurso desta semana. Muitas pessoas estavam interessadas em Cairngorm, mas eu tinha apenas cerca de 10 minutos para explicar os conceitos básicos de Cairngorm. Eu acho que a maneira mais fácil de ajudar estas pessoas é fazer uma rápida série sobre os benefícios de Cairngorm no meu blog. Esta série irá combinar artigos com “code-along” vídeos.
Aviso: Não afirmo ser um “expert” na Cairngorm - estou longe disso. No entanto, tenho usado Cairngorm em vários grandes projetos (tanto no Georgia Tech e no meu próprio negócio). Estou certamente aberto a correções, caso você veja que cometi algum erro neste projeto. Se você quiser que “os peritos” check out: Steven Webster, Alistair McLeod, Alex Uhlmann, e Peter Martin.
Nota: Os rapazes no Adobe Consulting (que desenvolveu Cairngorm) estão investigando algumas coisas novas com o quadro como um todo. É possível (na verdade provável), que algumas dessas coisas vão mudar no futuro. Uma das áreas muito específicas da mudança é o Model Locator.
Parte 1 – Usando um Model Locator
O Model Locator pattern é utilizado em Cairngorm, mas você não tem que ter uma plena implementação do Cairngorm para usar o pattern. Primeiro, vamos cobrir aquilo que você recebe de benefícios ao utilizar um modelo Locator.
Um Modelo Locator é um repositório centralizado de todos os dados que é necessário em toda a sua aplicação. Seus dados irão existir dentro de uma “Classe Singleton”. Esta “classe” pode ter apenas um exemplo de si mesmo. Por que isso é importante? Deixe-me dar-lhe um exemplo.
Temos grandes mini-notepads no trabalho que eu uso para anotar dados enquanto eu trabalho. No entanto, por vezes, eu perco um bloco - obtenho um novo e, em seguida, localizo o antigo. Depois de tanto ter sido largamente utilizados - é realmente difícil descobrir qual bloco eu estava usado para anotar um pedaço de informação de uma semana atrás. Esse é um exemplo simples - mas imagina se eu tivesse 20 blocos? Isto poderia deixar vocês loucos.
Da mesma forma, você poderá ter uma “classe” que recebe “instanciado” 20 vezes dentro de sua aplicação (mesmo que você não quer dizer para ela o que fazer). A maneira mais fácil de eliminar este problema é usar um único “Singleton”. Um singleton é uma classe que nunca é “criada” na forma tradicional. Tem uma regra principal - não mais que um por si só pode existir, em qualquer momento. Como ele faz isso? Eu mostrarei no exemplo Model Locator.
Actionscript:
- package net.davidtucker.CairngormSample.model {
- import com.adobe.cairngorm.model.IModelLocator;
- [Bindable]
- public class ModelLocator implements IModelLocator {
- // Single Instance of Our ModelLocator
- private static var instance:ModelLocator;
- public function ModelLocator(enforcer:SingletonEnforcer) {
- if (enforcer == null) {
- throw new Error( “You Can Only Have One ModelLocator” );
- }
- }
- // Returns the Single Instance
- public static function getInstance() : ModelLocator {
- if (instance == null) {
- instance = new ModelLocator( new SingletonEnforcer );
- }
- return instance;
- }
- //DEFINE YOUR VARIABLES HERE
- }
- }
// Classe Utilitária para negar o acesso ao construtor
-
class SingletonEnforcer {}
Este código pode parecer um pouco assustador no início, mas confiem em mim que não é tão difícil como pode parecer. Em primeiro lugar, temos o nosso pacote definição e nós importamos algumas classes. Neste momento sabemos que teremos o IModelLocator interface. Para utilizá-lo vai precisar do Cairngorm SWC que pode ser encontrado aqui: http://labs.adobe.com/wiki/index.php/Cairngorm:Cairngorm2.2:Download. Além disso, note - você pode construir um model Locator sem Cairngorm, e faço isso com freqüência em pequenos projectos (você acabou de deixar de fora os códigos “implements IModelLocator” e “import com.adobe.cairngorm.model.IModelLocator “ do Model Locator).
Actionscript:
- [Bindable]
- public class ModelLocator implements IModelLocator {
- // Single Instance of Our ModelLocator
- private static var instance:ModelLocator;
Em seguida, temos a nossa definição da classe. É importante que você use o Bindable metatag diretamente acima de sua classe. Isso permitirá que todas as nossas variáveis que definimos dentro do Modelo Locator serão utilizadas para vinculação. Também irá avançar e criar uma variável. Ela será chamada de “instance” e será do tipo ModelLocator. Esta será a variável onde vamos guardar as instâncias das classes. Também será denotado como uma propriedade “static”. Se você não tem certeza o que é uma propriedade “static”, ok - vamos discutir na nossa próxima lição.
Actionscript:
- public function ModelLocator(enforcer:SingletonEnforcer) {
- if (enforcer == null) {
- throw new Error( “You Can Only Have One ModelLocator” );
- }
- }
Este é seguido pelo construtor. O construtor assume argumento - “enforcer”. Você irá notar que esta “enforcer” tem um tipo “SingletonEnforcer”, que é definido logo após a nossa classe. Segue-se a lógica de que:
• Quando você coloca uma classe em um arquivo Actionscript abaixo da classe principal, ela só está disponível para essa classe. Muitas pessoas referem-se a estes como “utility classes” (embora muitas pessoas usam esse termo com um alcance muito mais amplo).
• Se o construtor exige este argumento - só então a nossa classe principal pode criar uma instância de si mesmo, porque não temos acesso a classe “SingletonEnforcer” - só a principal classe tem esse acesso.
• Não iremos acessar a nossa classe na forma normal, usando a declaração “new”, porque não se pode chamar o construtor (vou mostrar-lhe como vamos fazê-lo em um bit).
Assim que chegar dentro do construtor, temos algumas linhas certifique-se de que as coisas funcionem como planejadas. A declaração “if” garante que passamos um “enforcer” válido. Se não, haverá um Erro “Você Pode Ter Apenas Um ModelLocator”.
Actionscript:
- // Returns the Single Instance
- public static function getInstance() : ModelLocator {
- if (instance == null) {
- instance = new ModelLocator( new SingletonEnforcer );
- }
- return instance;
- }
A função “getInstance” é a forma como iremos acessar nosso ModelLocator do nosso pedido. Esta função apenas passa para trás o “exemplo” da classe. Se ela ainda não existe, ele irá criá-la. Podemos agora começar um ModelLocator usando o código a seguir
Actionscript:
var model:ModelLocator = ModelLocator.getInstance();
Tradução do original inglês: http://www.davidtucker.net
2 Responses to “Iniciando com Cairngorm – Parte 1”
Leave a Reply
You must be logged in to post a comment.
Julho 2nd, 2010 at 11:11 am
< blockquote >< a href=”http://pillspot.org/”>PillSpot.org. Canadian Health&Care.No prescription online pharmacy.Best quality drugs.Special Internet Prices. High quality pills. Buy drugs online< /a >…
Buy:Cialis.Soma.Viagra Soft Tabs.Zithromax.Viagra Super Force.Maxaman.Cialis Soft Tabs.Viagra Super Active+.Viagra.Propecia.Super Active ED Pack.Levitra.Cialis Professional.Cialis Super Active+.Viagra Professional.VPXL.Tramadol….
Julho 21st, 2010 at 2:40 am
< blockquote >< a href=”http://medicamentspot.com/”>MedicamentSpot.com. Canadian Health&Care.No prescription online pharmacy.Special Internet Prices.Best quality drugs. Low price drugs. Order pills online< /a >…
Buy:Synthroid.Nexium.Valtrex.Mega Hoodia.Actos.Accutane.100% Pure Okinawan Coral Calcium.Retin-A.Petcam (Metacam) Oral Suspension.Zovirax.Arimidex.Human Growth Hormone.Prednisolone.Lumigan.Prevacid.Zyban….