W tej chwili muszę zapisać cztery typy plików: zdjęcia, plakaty, zwiastuny i awatary użytkowników. Chcę umieścić zdjęcia i plakaty w folderze obrazów, awatary, które chcę umieścić w folderze awatarów, oraz zwiastuny w folderze zwiastunów.
Mój bieżący interfejs wygląda tak
public interface StorageService {
String save (
final File file,
final String contentType
) throws IOException;
...
}
aby dostosować metodę zapisu do umieszczania różnych plików, zastanawiam się, w jaki sposób określać folder w jakim ma zostać zapisany plik.
Pierwszym sposobem jest dodanie nowego parametru StorageFolder folder
public interface StorageService {
String save (
final File file,
final String contentType,
final StorageFolder folder //enum
) throws IOException;
...
}
i w zmiennej folder wpisać nazwę folderu, do którego zostanie dodany plik.
Drugi sposób polega na stworzeniu trzech oddzielnych metod
public interface StorageService {
String saveImage (
final File file,
final String contentType
) throws IOException;
String saveAvatar (
final File file,
final String contentType
) throws IOException;
String saveTrailer (
final File file,
final String contentType
) throws IOException;
...
}
Dodatkowo istnieje już wzorzec strategii do tworzenia implementacji do zapisywania danych w dwóch różnych chmurach: GoogleStorageService
i AmazonStorageService
. To pozwala na wybór w której chmurze mają być zapisywane dane.
Mi bardziej odpowiada pierwszy sposób z podaniem folderu do zapisu, a Wy co o tym sądzicie?