2012-02-17 15 views

Odpowiedz

26

Jedną z różnic w tym zakresie są zwykle niezmienne instancje, podczas gdy zasoby pozyskane z puli są zwykle zmienne.

Dzięki temu można utworzyć liczbę znaczników, aby uniknąć kosztu wielokrotnego tworzenia wielu wystąpień obiektów zawierających ten sam stan (ponieważ są one takie same, wystarczy utworzyć tylko jeden i ponownie użyć go we wszystkich miejscach w aplikacji), a zasoby w Pula to konkretne zasoby, które chcesz kontrolować indywidualnie i ewentualnie mają inny stan, ale nie chcesz ponosić kosztów tworzenia i niszczenia, ponieważ wszystkie one są zainicjalizowane w tym samym stanie.

+1

Najlepsza odpowiedź! Myślę, że Flyweight jest zwykle wykorzystywany do minimalizowania objętości pamięci, ponieważ zawiera tylko unikalne przedmioty. Pula obiektów pozwala zwiększyć wydajność, ale prowadzi do dużego zużycia pamięci. – Warlock

+1

Do pewnego stopnia, myślę, że wzór wagi również coś ukrywa. Jeśli pojedyncza, niezmienna waga muszki zajmuje zbyt dużo pamięci, trudno jest mówić o oszczędzaniu pamięci. Można powiedzieć, że jest to lepsze, niż te niezmienne obiekty raz i jeszcze raz. – Chao

5

Przynajmniej dwie główne różnice przychodzą na myśl:

  • Pula obiekt jest pojemnik dla zestawu obiektów domeny natomiast muszej zwykle jest obiektem domeny.
  • Pula obiektów zwykle zawiera zestaw podobnych obiektów, które mogą być współużytkowane jednocześnie, takie jak połączenia z bazą danych, podczas gdy zazwyczaj istnieje zestaw różnych obiektów typu flyweight, z których każda reprezentuje inny stan.
1

Ta strona opisuje oba wzory z konkretnymi przykładami. Wykonuje ładną robotę wyjaśniającą różnicę i wspiera powyższą odpowiedź Gabriela. http://www.oodesign.com/