eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki wzorzec projektowy: pilnowanie cyklu życia innego obiektu ?Re: Jaki wzorzec projektowy: pilnowanie cyklu życia innego obiektu ?
  • Data: 2012-03-21 08:13:51
    Temat: Re: Jaki wzorzec projektowy: pilnowanie cyklu życia innego obiektu ?
    Od: zażółcony <r...@c...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-03-17 13:17, Andrzej Jarzabek pisze:
    > On 16/03/2012 12:28, zażółcony wrote:
    >> W dniu 2012-03-16 12:06, Andrzej Jarzabek pisze:
    >>>
    >>> Po pierwsze, może po prostu weak reference jest patternem, który
    >>> powinieneś zaimplementować?
    >> Ciężka sprawa w foxie ... Nie bardzo widzę sposób implementacji
    >> bez mocnej ingerencji w same obiekty, które chcemy pilnować.
    >> Bez wtykania w destruktory specjalnego kodu tego nie widzę.
    >> Jak najmniej takich rzeczy w Foxie :)
    >
    > Nie znam się na foxpro, ale popatrz jak jest zrobiony shared_ptr i
    > weak_ptr w boost. Nie wymaga żadnej ingerencji w obiekty. To, czego
    > potrzebujesz, można zrobić podobnie z tą różnicą, że twój odpowiednik
    > shared_ptr nie będzie kopiowalny, więc nie musisz mieć licznika silnych
    > referencji.
    >
    >> No to jest jakiś pomysł, czyli coś w rodzaju LifeCycleObserver.
    >> Hmmm ... Może tak to właśnie u siebie nazwę :) Z tym tylko
    >> niuansem, ze obserwer właściwie bardziej obserwuje siebie, niż
    >> podpięty obiekt. Bo to obserwer byłby tym obiektem lokalnym,
    >> który musi w destruktorze odpalić 'wypisanie' innego obiektu
    >> z systemu. Taki SelfDestroyObserver :)
    >
    > Obserwator nie obserwuje siebie, tylko wrappera/smart pointera
    > zarządzającego czasem życia obiektu. Przy okazji desktukcji tego obiektu
    > wrapper powiadamia wszystkich obserwatorów, a oni obsługują
    > powiadomienie usuwając wskaźnik na niszczony obiekt z kolekcji.

    Ok, dzieki, przyjrzałem sie temu. I to byłaby właśnie ta nazwa,
    której szukałem: "Smart pointer"
    http://en.wikipedia.org/wiki/Smart_pointer

    Po połączeniu z wzorcem observer: smart pointer w destruktorze
    robi 'update', czyli śle powiadomienia o zmianie do wszystkich obserwatorów.

    Jest tu teraz trochę inny problem, specyficzny dla FoxPro, a mianowicie
    za dużo obiektów (a z niewiadomych dla mnie powodów w FoxPro
    tworzenie instancji obiektów jest wyjątkowo mało wydajne)
    towarzyszących. Na obiekt rzeczywisty idzie dodatkowo konstrukcja
    smart pointera i zaraz za nim konstrukcja observera. Dlatego ja
    kombinowałem od razu z mniej czystym rozwiązaniem, gdzie
    smart-pointer jest od razu obserwatorem i sam wie, skąd wypisać
    wskazywany obiekt. Muszę nad tym pomyśleć. Jeszcze raz dzięki :)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: