terça-feira, 14 de agosto de 2007

Component factories... como funcionam?

Aproveitando a pausa no desenvolvimento do HRM, resolvi elaborar este pequeno artigo sobre como funcionam as component factories dos objectos que constituem a aplicação.

Qualquer objecto que esteja incluído no namespace Business Components tem a seguinte estrutura:

  • Definição e propriedades (object)
  • Collection of (object)
  • Factory
A titulo de exemplo vou utilizar o seguinte objecto, utilizado para gerir a tabela de Habilitações Literárias:



1.
CARHabLit - Definição e propriedades
Esta classe não é mais do que um 'espelho' da tabela constante na base de dados, em que as suas propriedades são as mesmas que os campos.
A instanciação do objecto representará um determinado registo no servidor.

2. CARHabLitCollection - Collection (of CARHabLit)
Esta classe, herança de Public Class Collection(Of T), membro de System.Collections.ObjectModel, representa o conjunto de objectos CARHabLit. Ou seja a sua instanciação representa um conjunto de determinados registos no servidor. Por ser uma herança de Collection(Of T), significa que herda todas as funcionalidades necessárias para gerir o seu conjunto de items, nomeadamente as propriedades Count, Items() e os procedimentos Clear, Contains, Add, Remove, etc...

3. CARHabLitFactory - Factory
Esta é a classe que tem a responsabilidade de estabelecer a ligação com a base de dados e tratar de todas as actualizações necessárias...
Como se trata de uma classe totalmente encapsulada, não sabe como fazer a ligação ao servidor de base de dados, para esse efeito, será necessário fornecer-lhe uma ligação válida (As SqlConnection) para se instanciar.
Ao contrário das anteriores, a instanciação desta classe não representa nenhum conjunto de registos, ao invés representa todo o conjunto de funcionalidades disponíveis para o programador interagir com a base de dados.

Exemplo de aplicação:
Passos para carregar todos os registos constantes na tabela de Habilitações Literárias:
  • instanciar um objecto do tipo CARHabLitFactory(objCARHabLitFactory), fornecendo-lhe uma Connection (As SqlConnection) previamente criada.
  • instanciar um objecto do tipo CARHabLitCollection(objCARHabLitColl) para conter todos os objectos do tipo CARHabLit
  • executar o procedimento LoadRecords do CARHabLitFactory para cima do CARHabLitCollection:
    objCARHabLitColl = objCARHabLitFactory.LoadRecords
  • A partir deste momento pode-se carregar uma listview ou outra lista qualquer com os items do objCARHabLitColl e no fim destruí-lo para poupar recursos.
Outros exemplos poderiam ser dados, mas penso ter sido claro, pelo que a partir daqui deixo à vossa imaginação as funcionalidades que poderão implementar nos vossos sistemas...

0 comentários: