Pergunta

Eu tenho dificuldade de entender isso.Basicamente, esta Pesquisa API é usada para manter o baixo acoplamento entre os diferentes módulos natureza.Então, basicamente, um prestador de serviço e consumidor módulos cada um pode se comunicar uns com os outros usando a API de Pesquisa correto ?

Mas o que eu não entendo é:

é Pesquisa, como um saco cheio de quais objetos para que Classe?Alguém pode dar uma mais fácil analogia ?

Assim, as dependências é criado, e implementar os LookupListener o consumidor de serviço correto ?Obviamente, o consumidor tem dependência do fornecedor.

Então o que é a implementação de LookupListener ouvindo ?É próprio de Pesquisa ?Então, se há um mapa de outro módulo de classe, ele será armazenado como um objeto de Pesquisa dentro da implementação de LookupListener ?

Assim, a pesquisa é como uma espécie de saco que pode armazenar outro módulo de classes e métodos ?

É este o correto processo de determinação de uma seleção ?

  1. no TopComponent (ler) implementar a Pesquisa de Escuta, e a ação do Ouvinte.
  2. você criar um novo objeto (do outro módulo)
  3. associateLookup(Lookups.singleton(fff)); novamente, a confusão com esta linha:o que é associateLookup() fazendo exatamente ?
  4. result = Utilities.actionsGlobalContext().lookupResult(Browser1.class); o que é esta linha está fazendo ?qual é o resultado ?ele contém o Browser1 classe (a partir de outro módulo) ?
  5. result.addLookupListener (this);Por que você gostaria de adicionar ouvinte para o resultado ?e o que estamos ouvindo e por que o TopComponent ?

  6. Feito ?

E, finalmente, para minha confusão , como Nó API entrar em pla7y ?

Foi útil?

Outras dicas

Você pode pensar em Pesquisas como uma ferramenta básica que suporta acoplamento fraco de alta princípio de coesão.

Basicamente, você tem uma API em beverage-api módulo:

public interface Beverage {
   ...
}

Em seguida, outro módulo beers o que depende de beverage-api:

@ServiceProvider(service = Beverage.class)
public class SomeBeer implements Beverage {
   ...
}

no outro módulo, que também depende de beverage-api você pode escrever uma fórmula mágica:

Collection list = Lookup.getDefault().lookupAll(Beverage.class);

o que você irá obter uma lista de todos os fornecedores de bebidas ao redor, sem declarando exata a dependência a classe específica ou a existência de dependência em que módulo.Isso é ótimo, o seu código não é dependente de implementação específica, é o suficiente para ter esses módulos no caminho de classe e eles vão "automagicamente" carregar em seu aplicativo.

associateLookup(Lookups.singleton(fff)); novamente, a confusão com esta linha:o que é associateLookup() fazendo exatamente ?

Sim, isso é confuso.Basicamente, você está adicionando manualmente um objeto de pesquisa para o sistema.

result = Utilities.actionsGlobalContext().lookupResult(Beverage.class);

Utilities.actionsGlobalContext() está relacionado a atualmente selecionada (ativa) TopCompoment.Ele irá retornar uma instância de Beverage.class se ele existe no componente ativo.Se você deseja que todas as instâncias de determinada classe, você deve usar lookupAll().

result.addLookupListener(this); Por que você gostaria de adicionar ouvinte para o resultado ?

Para receber uma notificação sobre as alterações.Quando o usuário seleciona alguns Beverages objetos que ele dispara LookupListener método:

void resultChanged(LookupEvent ev);

e result.allInstances(); retornará instâncias que foram selecionados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top