Niedawno (4 dni temu) rozpocząłem programowanie w JAVA. Mam ogólne doświadczenie w programowaniu w C++ i PHP. Moje pytanie brzmi: czy możemy zaimplementować funkcję w JAVA, która jest dostępna we wszystkich klasach? Zastanawiam się nad jakąś funkcją globalnego logowania, którą muszę wywołać w kilku miejscach (rejestrować zdarzenia, błędy itp.).Funkcja (metoda) Java dostępna wszędzie (globalna)
Wyobraź sobie, że mam dwie klasy, A i B. Muszę zadzwonić do funkcji logowania w obu z nich, ale nie chcę kopiować całego ciała funkcji (okropne, w co wierzę), i chcę to nazwać ścisłym (bez tworzenia innej klasy, tworzenia instancji, a następnie wywoływania z instancji), np. logEvent(someVariable)
. Powinienem więc użyć abstrakcyjnej klasy C, którą rozciągną A i B, ALE są już rozszerzeniem innej klasy (wbudowanej). Ponieważ dziedziczenie wielokrotne jest niedozwolone (czyż nie?), Muszę zrobić jakąś sztuczkę. Singleton też mnie nie cieszy. W PHP lub C++ po prostu utworzę osobny plik z treścią funkcji, a następnie dołączę go.
Oto jak chcę go używać:
public class A extends SomeClass {
String error = "Error from class A";
logEvent(error);
}
public class B extends SomeOtherClass {
String error = "Error from class B";
logEvent(error);
}
Można przeczytać o złu 'Singleton' wzorca. –
@LeeMeador "evil" to kwestia opinii. – hexafraction