Dobry uniwersalny interfejs do zapisywania plików

0

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?

0

Najbardziej uniwersalny wydaje się drugi sposób, z przekazaniem folderu.
GoogleStorageService i AmazonStorageService implementują jakiś interfejs? Twój musi być zgodny z nimi?
Znaczy musi być kolejną implementacją strategii?

0

GoogleStorageService i AmazonStorageService implementują właśnie StorageService. Chodzi o to, że mam interfejs StorageService z metodami np. save, delete. Ten interfejs StorageService implementują GoogleStorageService i AmazonStorageService. I te dwie implementacje StorageService operują według konfiguracji odpowiednio na Google i Amazon.

1 użytkowników online, w tym zalogowanych: 0, gości: 1