Pergunta

Introdução:

Estou trabalhando em uma API que fornece acesso a Picasa, Flickr e alguns outros serviços de imagem.

Eu tenho uma classe webalbum (ele fornece acesso a fotos aninhadas, álbuns, se permitido e algumas meta informações).

Minha API permite que o usuário não apenas leia álbuns, mas também permite que eles criem novos álbuns. No caso geral, para criar um novo álbum, o usuário da API deve usar um método de fábrica, que cria um álbum e depois chama o método WebGallery#addAlbum (newAlbum).

Mas o Flickr não permite a criação de álbuns vazios, requer pelo menos uma foto predefinida em qualquer novo álbum (para fazer uma boa prévia do álbum). Em termos do Flickr, esta primeira foto é chamada de Primary Photo. Portanto, para criar um álbum para o Flickr, o usuário deve usar um método de fábrica, depois adicionar uma imagem ao novo álbum e depois ligar WebGallery#addAlbum (newAlbum).

Problema:

No momento, a aula de webalbum tem esse método

public interface WebAlbum {

   ...

   public boolean requiresPrimaryPhoto ();
}

Não posso deixar esse nome porque o Primaryphoto é apenas um termo do Flickr. Eu posso mudar para

public interface WebAlbum {

   ...
   //with spaces: requires one added photo to create new album

   public boolean requiresOneAddedPhotoToCreateNewAlbum ();
}

Por favor, sugira um nome mais curto que tenha o mesmo significado.

Foi útil?

Solução

boolean isEmptyAlbumAllowed

Outras dicas

public boolean needsDefault;

ou, mais descritivo

public boolean needsDefaultImg;

Edite outra pergunta que você deve fazer é se essa propriedade deve ser exposta. Se você deseja tornar a experiência de gerenciar álbuns consistentes em todos os back -end, talvez sua biblioteca possa fornecer imagens padrão, sempre que necessário. Um logotipo para o seu aplicativo, talvez. É improvável que os usuários tenham álbuns vazios por muito tempo.

Eu iria com

public boolean requiresDefaultImage;

ou

public boolean requiresAlbumImage;

Eu usaria algo como Perguntmetyalbum ou EmpurybumerMited

Dito isto, adicionar um método extra significa que o usuário da classe precisa saber que isso pode até ser um problema e lembre -se de fazer o cheque antes de adicionar o álbum. Isso pode ser um problema, porque a maioria dos desenvolvedores "deseja fazer as coisas rapidamente" e não sabia sobre as diferenças entre os serviços.

Mesmo adicionar uma nota na documentação não é suficiente porque muitas pessoas chamando de "addalbum" nunca leram a documentação do método, pois parecem diretas (veja minha pesquisa para obter detalhes).

Idealmente, você poderá criar fábricas diferentes para cada serviço (e fornecer as informações lá) ou, se precisar usar uma única API, encontre uma maneira de falhar graciosamente ou talvez adicionar uma imagem de espaço reservado.

Eu acho que você pode tornar ainda mais curto removendo a parte redundante do álbum.

public boolean canBeEmpty();
   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();

Crie classes Flickerwebum e Picasawebum. Cada um deles representará comportamento específico para cada provedor.

A resposta curta para sua pergunta:

boolean isDefaultPhotoRequired;

A resposta mais longa: o requisito de foto padrão não é compartilhado por todos os webalbums, por isso é um candidato perfeito para usar a herança. Mova esse comportamento para uma subclasse específica do Flickr. Você pode fazer algo como adicione a criação dessa defaultimage a um flickr.init ().

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