...
Camada de Visualização (Commons UI)
Conforme citado na seção de contextualização, a arquitetura proposta visa eliminar os problemas identificados em diversos projetos já executados, onde foi possível identificar a falta de padronização para realizar tarefas comuns no processo de desenvolvimento. Assim, temos como objetivo principal desta seção o detalhamento do projeto Commons UI que provê soluções para que seja possível estabilizar, o que era previamente uma atividade caótica, em uma atividade produtiva e padronizada. Em busca deste equilíbrio, foram estudadas soluções e padrões de mercado que balizam o desenvolvimento de software atualmente.
...
Note a forma que declaramos a função foo no service acima. Internamente, ao declarar um service, a função retornada será instanciada apenas quando necessário (lazy). Esta instanciação dá-se chamando construtor da função através do operador new. Services são estruturas simples, expoem métodos declarados no contexto (variável implícita this) e serão instanciados pelo AngularJS a partir de um construtor vaziopadrão. Como são estruturas simples, objetos mais complexos que tem a necessidade de receber parametros antes de sua criação são desenvolvidos como factories.
...
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
fooModuleshieldModule.factory('fooFactory$dialog', function() { return { var Dialog foo:= function(isOpen, operation) { console.log( 'This is foo factory printing bar :)' ); } this.isOpen = isOpen ? isOpen : false; }; }); fooModule.controller('fooController', ['fooFactory', function(fooFactory) { fooFactory.foo() this.operation = operation ? operation : ''; }; Dialog.prototype.close = function() { this.isOpen = false; this.operation = ''; }; Dialog.prototype.open = function(op) { this.isOpen = true; if (op) this.operation = op; }; return { 'new': function(isOpen, operation) { return new Dialog(isOpen, operation); } }; }); shieldApp.controller( 'PeriodCtrl', ['$scope', '$http', '$property', '$resourceLocator', '$dialog', // ... // ... $scope.view = { // ... // ... detailDialog: $dialog.new() // ... // ... }; }]); |
Note a forma que declaramos a função foo na factory acima. Internamente, ao declarar uma factory, a função foo já esta instanciada e apenas será executada, diferentemente do service onde uma nova função será instanciada através do operador new.
...