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 propriedadesEsta 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 - FactoryEsta é 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...