2008-09-17 11 views
5

Czy istnieje wzór, który można wykorzystać podczas zapisywania i ładowania różnych formatów plików?Wzór do zapisywania i zapisywania do różnych formatów plików

Na przykład, mam skomplikowaną hierarchię klas dla dokumentu, ale chcę obsługiwać kilka różnych formatów plików.

Pomyślałem o wzorze strategii, ale nie jestem przekonany z powodu konieczności dostępu do każdej części obiektu w celu jej zapisania i załadowania.

Odpowiedz

2

Można użyć Visitor Pattern, pozwala to na iterację ponad twoją hierarchią, wykonując różne operacje w zależności od węzła, który Gość aktualnie przetwarza.

Złe wieści: prawdopodobnie musisz dodać co najmniej metodę wirtualną u góry hierarchii i być może przedefiniować ją w niektórych klasach pochodnych, a odwiedzający nadal będzie uzyskiwał dostęp do danych węzłów, ale odłączysz format pliku , ponieważ różne wdrożenia odwiedzających mogą zapisywać dane zebrane na różne sposoby.

Spójrz również na memento pattern, jeśli ukrywanie danych hierachy klasy jest koniecznością. This article może być również pomocny.

Edit: Link do oryginalnego Memento pattern article używając google cache

+0

Twój link do artykułu na wzór memento jest zepsuty. Czy masz inny dobry? –

+0

Wow, było jak 7 lat; i nawet nie pamiętam nazwy artykułu, przepraszam, –

+0

dobre wiadomości, znalazłem to za pomocą cache'a Google: http://webcache.googleusercontent.com/search?q=cache:www.ondotnet.com/pub/a/dotnet/ 2002/09/09/memento.html –

1

Być może zechcesz rzucić okiem na wzorzec Konstruktora. GoF page 97 ..

0

Co powiesz na (coś w oparciu) o Template method pattern?

Jedna nadklasa wie, jak rozdzielić hierarchię klas, ale polega na jej podklasach, aby rzeczywiście zrobić z nią coś pożytecznego.

Powiązane problemy