Dúvida de Design OO - Solicitação de Equipamento e Equipamento em si

Pessoal,

Estou com um problema complicado para modelar e não estou achando uma boa solução. Vocês podem, por favor, dar uma olhada para mim? Acho legal para o fórum porque é um caso que pode gerar discussões interessantes.

Parte do sistema que estou construindo é sobre solicitação de equipamentos (placas de vídeo, memórias RAM, etc), controle de ordens de compra para suprir essas demandas e controle de estoque de equipamentos já disponíveis. Quando houver uma ação para atender uma solicitação, é verificado se os equipamentos solicitados estão disponíveis no estoque, e os que não estiverem ficam separados para entrar em pedidos de compra.

A dúvida é: como mapear o equipamento em si que está no estoque e os requisitos dos equipamentos que estão na solicitação (de forma a poder associá-los) sem ter repetição de código e mantendo uma clareza na estrutura das classes?

Segue o que eu pensei até agora e as respectivas desvantagens.

Primeiro design: Pensei em ter uma classe que representa a solicitação e um dos membros desta seria uma lista de objetos que representam as especificações dos equipamentos. No caso do estoque, este seria composto de objetos de uma classe Equipment.
Problema: as classes de equipamento e de solicitação de equipamento teriam atributos em comum para cada implementação. Ex: solicitação de RAM e memória RAM teriam os atributos de capacidade, barramento, etc em comum.

Segundo design: Haveria apenas uma classe que representaria equipamentos E especificações de equipamentos. Tanto o estoque quanto parte das solicitações usariam o mesmo tipo de objeto.
Problemas: objeto de equipamento deveria ter flag (ouch) para dizer se é uma especificação; Haveria problemas para colocar isso no banco de dados (coloco na mesma tabela? tabelas diferentes com campos iguais?); Teria que ligar duas instancias de equipamentos para indicar que a especificação X foi resolvida com o equipamento Y (talvez um mapa na classe de solicitação?).

Talvez exista algum pattern para resolver isso, ou talvez uma solução adhoc clara, porém ainda não encontrei. Por outro lado, esse caso me parece comum. O que vocês acham? Tem alguma idéia?

Obrigado.

Particularmente eu prefiriria colocar assim
1 classe Equipamento.
1 classe Solicitacao, que irá possuir uma coleção (pode ser List) de Equipamento.
Quanto ao problema dos atributos, não compreendi o que quis dizer com [quote=DanielGimenes]
: solicitação de RAM e memória RAM teriam os atributos de capacidade, barramento, etc em comum.
[/quote]
Para mim, quando se solicita RAM está se solicitando memória RAM (mesmo que seja um upgrade, de 1GB para 2GB, por exemplo). Para ser mais claro, se é solicitado um HD maior, você não vai cadastrar mais 100GB e sim um HD compatível com a solicitação.