4

序章:

Picasa、Flickr、その他の画像サービスへのアクセスを提供するAPIに取り組んでいます。

私はクラスWebAlbumを持っています(ネストされた写真、許可されている場合はアルバム、およびいくつかのメタ情報へのアクセスを提供します)。

My APIを使用すると、ユーザーはアルバムを読むだけでなく、新しいアルバムを作成することもできます。一般的なケースでは、新しいアルバムを作成するために、APIユーザーはファクトリメソッドを使用する必要があります。ファクトリメソッドはアルバムを作成してからメソッドを呼び出しますWebGallery#addAlbum (newAlbum)

ただし、Flickrでは空のアルバムを作成できません。新しいアルバムには、少なくとも1枚の事前定義された写真が必要です(おそらく素晴らしいアルバムプレビューを作成するため)。Flickrの用語では、この最初の写真はと呼ばれPrimary Photoます。したがって、Flickrのアルバムを作成するには、ファクトリメソッドを使用してから、新しいアルバムに画像を追加してから、を呼び出す必要がありますWebGallery#addAlbum (newAlbum)

問題:

現在、WebAlbumクラスにはこのメソッドがあります

public interface WebAlbum {

   ...

   public boolean requiresPrimaryPhoto ();
}

PrimaryPhotoはFlickrの用語であるため、この名前を残すことはできません。に変更できます

public interface WebAlbum {

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

   public boolean requiresOneAddedPhotoToCreateNewAlbum ();
}

同じ意味の短い名前を提案してください。

4

8 に答える 8

11

boolean isEmptyAlbumAllowed

于 2010-03-02T14:59:43.663 に答える
2

public boolean needsDefault;

または、より説明的な

public boolean needsDefaultImg;

編集あなたがあなた自身に尋ねるべきもう一つの質問は、このプロパティが公開されるべきかどうかです。アルバムの管理エクスペリエンスをすべてのバックエンドで一貫性のあるものにしたい場合は、ライブラリが必要に応じてデフォルトの画像を提供できる可能性があります。アプリのロゴかもしれません。とにかく、ユーザーが非常に長い間空のアルバムを持っている可能性は低いです。

于 2010-03-02T14:57:53.263 に答える
2

私は一緒に行きます

public boolean requiresDefaultImage;

また

public boolean requiresAlbumImage;
于 2010-03-02T15:02:50.743 に答える
1

私はallowsEmptyAlbumやemptyAlbumPermittedのようなものを使用します

そうは言っても、メソッドを追加するということは、クラスのユーザーがこれが問題になる可能性があることを認識し、アルバムを追加する前にチェックすることを忘れないようにする必要があることを意味します。ほとんどの開発者は「物事を早く終わらせたい」ので、これは問題になる可能性があり、サービス間の違いについては知りません。

「addAlbum」を呼び出す多くの人々は、それが簡単に見えるので、メソッドのドキュメントを決して読まないので、ドキュメントにメモを追加するだけでは十分ではありません(詳細については私の研究を参照してください)。

理想的には、サービスごとに異なるファクトリを作成する(そしてそこに情報を提供する)か、単一のAPIを使用する必要がある場合は、正常に失敗する方法を見つけるか、プレースホルダーイメージを追加することができます。

于 2010-03-02T15:00:30.280 に答える
1

余分なアルバム部分を削除することで、さらに短くできると思います。

public boolean canBeEmpty();
于 2010-03-02T15:16:40.307 に答える
0

FlickerWebAlbumクラスとPicasaWebAlbumクラスを作成します。それらのそれぞれは、各プロバイダーに固有の動作を表します。

于 2010-03-02T15:05:15.133 に答える
0

あなたの質問に対する簡単な答え:

boolean isDefaultPhotoRequired;

長い答え:デフォルトの写真要件はすべてのWebAlbumで共有されているわけではないため、継承を使用するのに最適な候補です。その動作をFlickr固有のサブクラスに移動します。そのdefaultImageの作成をFlickr.init()に追加するようなことをすることができます。

于 2010-03-02T15:01:33.800 に答える
0
   public boolean requiresInitialPhoto ();

   public boolean doesOnePhotoExist ();

   public boolean needsOnePhoto ();
于 2010-03-02T15:04:00.863 に答える