Pomieszane są dwie główne koncepcje: wiązanie i ładowanie. Jest to powiązane z koncepcją DataBinding, która gdzieś w środku często robi obie te rzeczy. Po zastanowieniu się, dodam jeszcze jedną koncepcję, aby ukończyć trifectę, wysłać.
Rodzaje
Późne wiązanie : typ jest nieznany, dopóki zmienna nie zostanie wykonana w czasie wykonywania; zwykle poprzez przypisanie, ale istnieją inne sposoby na przymus typu; języki dynamicznie typowane nazywają to podstawową cechą, ale wiele języków typowanych statycznie ma pewną metodę osiągnięcia późnego wiązania
Wdrażane często przy użyciu [specjalnych] typów dynamicznych, introspekcji / refleksji, flag i opcji kompilatora lub metodami wirtualnymi poprzez pożyczanie i rozszerzanie dynamicznej wysyłki
Wczesne wiązanie : typ jest znany, zanim zmienna zostanie wykorzystana w czasie wykonywania, zwykle za pomocą statycznych, deklaratywnych środków
Wdrażane często przy użyciu standardowych typów pierwotnych
Funkcje
Wysyłka statyczna : znana, określona funkcja lub podprogram w czasie kompilacji; jest jednoznaczny i zgodny z podpisem
Zaimplementowane jako funkcje statyczne; żadna metoda nie może mieć tego samego podpisu
Dynamiczna wysyłka : nie jest to konkretna funkcja ani podprogram w czasie kompilacji; określone przez kontekst podczas wykonywania. Istnieją dwa różne podejścia do „dynamicznej wysyłki”, w zależności od tego, jakie informacje kontekstowe są wykorzystywane do wyboru odpowiedniej implementacji funkcji.
W przypadku pojedynczej [ dynamicznej ] wysyłki tylko typ instancji jest używany do określenia odpowiedniej implementacji funkcji. W językach o typie statycznym oznacza to w praktyce, że typ instancji decyduje, która implementacja metody zostanie zastosowana, niezależnie od typu odniesienia wskazanego, gdy zmienna jest deklarowana / przypisywana. Ponieważ tylko jeden typ - typ instancji obiektu - służy do wnioskowania o odpowiedniej implementacji, podejście to nazywa się „pojedynczą wysyłką”.
Istnieje również wiele [ dynamicznych ] wysyłek , w których typy parametrów wejściowych pomagają również określić, która implementacja funkcji ma zostać wywołana. Ponieważ wiele typów - zarówno typ wystąpienia, jak i typ (parametry) parametru - wpływają na wybraną implementację metody, podejście to nosi nazwę „wielokrotnego wysyłania”.
Zaimplementowane jako funkcje wirtualne lub abstrakcyjne; inne wskazówki obejmują przesłonięte, ukryte lub zaciemnione metody.
Uwaga: To, czy przeciążenie metody wymaga dynamicznej wysyłki, zależy od języka. Na przykład w Javie przeciążone metody są wysyłane statycznie.
Wartości
Leniwe ładowanie : strategia inicjowania obiektu, która odkłada przypisanie wartości, dopóki nie będzie potrzebne ; pozwala, aby obiekt był zasadniczo poprawny, ale świadomie niekompletny i czekał, aż dane będą potrzebne przed załadowaniem; często uważane za szczególnie przydatne do ładowania dużych zestawów danych lub oczekiwania na zasoby zewnętrzne
Implementowane często przez celowe nie ładowanie kolekcji lub listy do obiektu złożonego podczas wywołań konstruktora lub inicjalizacji, dopóki jakiś dalszy program wywołujący nie poprosi o wyświetlenie zawartości tej kolekcji (np. Get_value_at, get_all_as itp.). Odmiany obejmują ładowanie meta informacji o kolekcji (takich jak rozmiar lub klucze), ale pomijanie rzeczywistych danych; zapewnia również mechanizm dla niektórych środowisk wykonawczych, aby zapewnić programistom dość bezpieczny i wydajny schemat wdrażania singletonów
Chętne ładowanie : strategia inicjowania obiektu, która natychmiast wykonuje wszystkie przypisania wartości , aby mieć wszystkie dane potrzebne do uzupełnienia, zanim uzna się za prawidłowy.
Implementowane często przez dostarczenie obiektom złożonym wszystkich znanych danych tak szybko, jak to możliwe, na przykład podczas wywołania konstruktora lub inicjalizacji
Wiązanie danych : często wiąże się z tworzeniem aktywnego łącza lub mapy między dwoma kompatybilnymi strumieniami informacji , aby zmiany w jednym były odzwierciedlane z powrotem w drugim i odwrotnie; w celu zachowania zgodności często muszą mieć wspólny typ podstawowy lub interfejs
Często wdrażany jako próba zapewnienia czystszej, spójnej synchronizacji między różnymi aspektami aplikacji (np. Widok-model do wyświetlenia, model do kontrolera itp.) I mówi o pojęciach takich jak źródło i cel, punkty końcowe, powiązanie / rozpięcie, aktualizacja i zdarzenia, takie jak on_bind, on_property_change, on_explicit, on_out_of_scope
EDYTUJ UWAGĘ: Ostatnia ważna edycja, która zawiera opis przykładów tego, jak często się to zdarza. Poszczególne przykłady kodu zależą całkowicie od implementacji / środowiska wykonawczego / platformy