blck Posted May 23, 2013 at 04:59 PM Report #508589 Posted May 23, 2013 at 04:59 PM Boa tarde a todos estou com um pequeno problema num projecto que estou a desenvolver. É uma aplicação Desktop em .NET O meu problema é que tenho vários ficheiros para ler de diferentes tipos e diferentes extensões, essa informação tem de ficar guardada em memória logo quantos ficheiros tenho é quantas classes existem. Como é logico fazer varios metodos em cada classe para ler o tipo de ficheiro não é boa politica, como tal quero implementar os famosos padroes para simplificar isto. O maior problema é mesmo a estrutura de ficheiros pois alguns tem mais colunas outros a sua leitura nao começa na 1ª linha etc... A minha ideia seria implementar uma Strategy ou um Adapter que independemente da extensao escolhida do ficheiro ele enviar para um metodo generico e dai redirecionar para o sitio correcto, o meu problema é como sei onde deve começar a ler e que objecto vai criar para guardar os dados em memoria (Listas). Peço desculpa pelo tema um pouco diferente mas se for possivel fazer aqui um mini brainstorm seria bom pois, na programação a troca de ideias ajuda imenso. Obrigado.
bioshock Posted May 23, 2013 at 05:05 PM Report #508592 Posted May 23, 2013 at 05:05 PM Mostra-nos as estruturas dos ficheiros e o que já tentaste desenvolver.
blck Posted May 23, 2013 at 09:28 PM Author Report #508644 Posted May 23, 2013 at 09:28 PM Pequenos exemplos TITULO Do Ficheiro: ID x y Z ---------------------------------------------------- 1 7898.385 7668.367 7.5 a b c d e f g h i j 2011 5 1 0 0 0 1 0.5 0.5 0.2 Ambos ficheiros TXT, cada ficheiro pertence a um objecto diferente a ter atençao que o exemplo2 o ficheiro so deve começar a ler a partir da 3ª linha que e onde tem o cabeçalho e no 1º exemplo e a partir da 2ª que e onde aparece o cabeçalho Existem do mesmo genero mas em CSV. No que toca a codigo, o que fiz e apenas rabiscos, nada de concreto...
bioshock Posted May 24, 2013 at 08:35 AM Report #508698 Posted May 24, 2013 at 08:35 AM É complicado fazeres o que queres (diminuir o número de funções), quando na verdade, pelo exemplo que deste, não existem padrões. (...) famosos padroes para simplificar isto. O maior problema é mesmo a estrutura de ficheiros pois alguns tem mais colunas outros a sua leitura nao começa na 1ª linha etc... Tu podes, se quiseres, fazer só uma função. Para simplificar, terá uma variável [Optional] dentro da mesma, e uns quantos cases.
blck Posted May 24, 2013 at 09:55 AM Author Report #508717 Posted May 24, 2013 at 09:55 AM (edited) pois eu entendo, ando as voltas disto para tentar fazer uma simplificação, mas se calhar o mesmo vai ser cada dependendo do ficheiro cada classe vai tratar da sua informação. também ja estive a ler os padroes strategy e adapter de forma mais detalhadas e não vejo maneira de fazer isto. obrigado 🙂 Edited May 24, 2013 at 09:55 AM by blck
legd1991 Posted May 25, 2013 at 04:51 PM Report #508985 Posted May 25, 2013 at 04:51 PM Vais ter sempre um método para cada tipo de ficheiro. Sempre que vais ler um ficheiro vês a extensão e dependendo da função chamas a função adequada, depois o que podes ter é uma classe genérica que vai servir para gravar a informação dos ficheiros.
Nuno Gomes Posted May 25, 2013 at 11:24 PM Report #509009 Posted May 25, 2013 at 11:24 PM Outra abordagem é usar o padrão Publisher/Subscriber (Observer Pattern). Neste cenário terás múltiplos Subscritores mas cada um aceita um determinado tipo de extensão. O Publicador publicaria para todos os Subscritores o caminho do ficheiro. Com esta abordagem ganhas estrutura, separação de contexto, menos complexidade e maior facilidade de leitura e manutenção. Existem imensos exemplos deste padrão e poderás encontrar facilmente numa pesquisa, no entanto aqui fica 1 exemplo: http://stackoverflow.com/questions/6036104/publish-subscriber-pattern-in-c-sharp-advice-needed
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now