Pergunta

Eu não estou procurando tanto por respostas específicas de idioma, apenas modelos gerais para a execução de um sistema plug-in (se você quer saber, eu estou usando Python). Eu tenho minha própria idéia (registrar retornos de chamada, e é sobre isso), mas eu sei que existem outros. O que é normalmente usado, eo que mais é razoável?

O que você quer dizer com um sistema de plugins? Injeção Does Dependência e do COI recipientes soa como uma boa solução?

Quer dizer, uh, bem, uma maneira de inserir a funcionalidade no programa de base sem alterá-lo. Eu não tinha a intenção de defini-lo quando parti. Injeção de dependência não olhar particularmente adequado para o que estou fazendo, mas eu não sei muito sobre eles.

Foi útil?

Solução

Há um muito bom episódio de href="http://www.se-radio.net" rel="nofollow noreferrer"> Radio , que você pode estar interessado.

Para referência futura, tenho aqui reproduzido o " Regras para Enablers "( alternativa ligação ) dada no excelente Contribuindo para Eclipse por Erich Gamma, Kent Beck .

  • Regra do convite - Sempre que possível, deixe que os outros contribuem para suas contribuições
  • .
  • Carregando Regra preguiçoso -. Contribuições são carregadas apenas quando eles são necessários
  • Seguro Regra Platform -. Como o provedor de um ponto de extensão, você deve se proteger contra o mau comportamento por parte dos extensores
  • Fair Regra Play -. Todos os clientes jogar pelas mesmas regras, mesmo me
  • regra explícita de extensão -. Declarar explicitamente onde uma plataforma pode ser estendida
  • Regra Diversidade - Pontos de extensão aceitar várias extensões
  • .
  • Good Fences Rule -. Quando passar o controle fora do seu código, proteja-se
  • regra explícita API -. Separar o API de internos
  • Regra de Estabilidade -?. Uma vez que você convida alguém para contribuir, don t mudar as regras
  • Regra API Defensiva -. Revelar apenas o API em que você está confiante, mas estar preparado para revelar mais API como clientes perguntar para ele

Outras dicas

A arquitetura simples plugin pode definir uma interface plug-in com todos os métodos do plugin deve implementar. O evento alças de plug-in da aplicação, e pode usar o código padrão do aplicativo, objetos de modelo, etc, para fazer as coisas. Basicamente o mesmo como uma forma ASP.NET faz, exceto que você está substituindo em vez de implementar.

Ninguém me ensinou esta parte, e eu não sou nenhum expert, mas sinto-me: Em um plugin geral será menos estável do que a sua aplicação, para que o aplicativo deve estar sempre no controle e só dão as oportunidades periódicas plugin para agir. Se um plug-in pode registrar um Observer, em seguida, chama o delegado deveria ser julgado / apanhado.

Em Python, você pode usar o sistema de ponto de entrada fornecido pelo setuptools e pkg_resources. Cada ponto de entrada deve ser uma função que retorna informações sobre o plugin -. Funções nome, autor, instalação e desmontagem, etc

Como sobre Abstract Factory ? Suas define programa de base como os conceitos abstratos interagem uns com os outros, mas o chamador tem para fornecer a implementação.

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