Mostrando postagens com marcador Padrões de Projeto. Mostrar todas as postagens
Mostrando postagens com marcador Padrões de Projeto. Mostrar todas as postagens

domingo, 23 de dezembro de 2007

Já que o Ano Novo tá ae,...

... eu tô cheio de recessos no trabalho e ainda se bateu um desespero programístico sobre mim, resolvi implementar uma série de padrões de projeto com uma visão bem voltada para os jogos. Não vou colocar nada aqui ainda, pois estou trabalhando em outras pequenas surpresas que podem vir a aparecer ainda em Janeiro.

O ano vai começar com artigos no ritmo do artigo sobre o Singleton e o MVC: explicação do conceito + Diagramação UML + Código + comentários. Deixa só passar o ressacão do Reveillon prá gente sacudir isso aqui.

"Boas festas"; "se forem dirigir, não bebam", "Feliz Natal" e todos os outros clichês que estão nos dizendo. Aguardem o novo ano que vamos ter coisas boas por aqui! Até lá!

P.S.: Esqueci de dizer: caso alguém queira um padrão específico, pode pedir aí. Não garanto que eu consiga trazê-lo pro blog, mas vou fazer de tudo para dissecar o menino!

quinta-feira, 15 de novembro de 2007

Mais problemas... E agora?!?

Nesse exato momento, estamos tentando resolver um problema meio chatinho. Até então, estávamos desenvolvendo o Jogo SEM a camada de Armazenamento, já que isso simplifica (e muito) o nosso trabalho. Para acessar as cartas do BD, usávamos métodos com lógica falsa que simulava um acesso ao Armazenamento, mas que, na realidade, construíam tudo o que era pra ser construído diretamente em código.

Eu vi um leitor ali com cara de “oO?”. Xô passar um exemplo: A gente tem um método BuscarCartas() que deveria ir à camada de Armazenamento e materializar todas as cartas para que a interface pudesse desenhá-las. DEVERIA, mas não está fazendo isso. Pelo contrário: BuscarCartas() está cheia de linhas de código que criam diretamente aquele monte de cartas que deveriam ter sido buscadas no Armazenamento.

“Ta Tiago, mas qualé o problema disso?”. O problema é que o exemplo cresceu demais. Antes isso funcionava perfeitamente, pois ainda estávamos acertando o funcionamento básico da interface e as interações dela com a lógica do caso de uso Batalhar. Agora que precisamos trabalhar corretamente com a diversidade de cartas entre os jogadores, o troço não dá vazão: temos que ficar criando métodos falsos um em cima do outro, o que tem me deixado com medo. No final, se esse monte de métodos continuar crescendo, pode dificultar muuuuito a inserção da camada de Armazenamento.

Ainda não está nada certo, mas o Douglas deu a idéia de utilizar um padrão chamado Database Broker (ou só DB Broker), uma Indireção entre a camada de Armazenamento e o resto do programa. Assim, uma vez criado o DBBroker, todos os acessos ao armazenamento vão ser realizados por ele, bem como funciona com a Controladora. Independente de como seja implementado o Armazenamento, basta trocar a lógica dos métodos do DBBroker que tudo está 100% funcional.

“E por que fazer isso?” Pois nosso BD vai ser inicialmente uma tabelona XML mesmo. Estamos tendo trabalho suficiente com a interface e a interação dela com a lógica para implementarmos um BD distribuído. Somos só 3, nada de inchar o design ;)

P.S.: Caso algum de vocês leitores já passaram por algum problema do gênero, agradeceria muito se rolasse uma ajuda com esse problema!

P.S.2: Desculpem pela falta de matérias, mas realmente não tô tendo muito sobre o que postar: graças à esse rolo, não muito tem acontecido no Jogo. Pelo menos, a solução vai virar um outro artigo.

P.S.3: Não não, realmente prefiro o Wii. - Já vi isso em algum outro lugar ;)

quinta-feira, 1 de novembro de 2007

MVC e o Linkage: O que se deve ou não fazer? (parte 3)

É gente, depois de um bom tempo enrolado com problemas e mais problemas (aparentemente, até o meu MAC foi clonado), eu consigo finalmente disponibilizá esse código (com a ajuda do Douglas, claro). É o que dizem: "antes tarde do que nunca". Falando sobre o código em si, tanto eu quanto o Mário achamos que ele ficou um cado complexo por causa da Controladora usando o Singleton. Pensei seriamente em tirar esse Singleton, mas resolvi deixá ela assim mesmo para que vocês tenham mais um exemplo do uso do padrão num programa. Basta deixar claro que o Singleton NÃO É NECESSÁRIO para o exemplo.

Devido à troca de endereço, a versão completa desse artigo pode ser encontrada no endereço http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3/

sábado, 20 de outubro de 2007

MVC e o Linkage: O que se deve ou não fazer? (parte 2)

Agora que todos já sabem como funciona o MVC, vou continuar com a 2a e última parte do artigo. Hoje vou mostrar os pontos positivos e negativos da implantação da arquitetura, além de finalmente mostrar o que isso tudo tem a ver com o Linkage.


Devido à troca de endereço, a versão completa desse artigo pode ser encontrada no endereço http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2/

quarta-feira, 17 de outubro de 2007

MVC e o Linkage: O que se deve ou não fazer? (parte 1)

Eu acredito que muita gente vai me chamar de maluco depois desse artigo, mas espero que todos entendam. Pra começar, vamos falar do MVC (ou Model-View-Controller), uma arquitetura de software baseado na idéia de interações emtre camadas de alta coesão (fazem exatamente aquilo que se propõem a fazer e nada mais que isso) e baixo acoplamento (são o mais independentes possível entre si).

Devido à troca de endereço, a versão completa desse artigo pode ser encontrada no endereço http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1/

segunda-feira, 24 de setembro de 2007

Singleton: Limitando e Distribuindo

O nosso Jogo tem uma característica muito especial: ele é traduzido dinamicamente, sem a necessidade de recompilação. Para isso, estamos colocando todo o texto em uma classe especial, a TIdioma. O problema é que, se nós estivéssemos utilizando um objeto simples, a cada “new” que déssemos, teríamos uma cópia inútil do objeto ocupando espaço inutilmente. Dessa forma, se tivéssemos 500k de texto, poderíamos estar ocupando vários megas da memória.


Devido à troca de endereço, a versão completa desse artigo pode ser encontrada aqui: http://nusseagora.blog.br/singleton-limitando-e-distribuindo/