Przeciążanie metod Singletona

Przeciążanie metod Singletona
lipkerson
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 2 lata
0

Jak w temacie - jak to zrobić? Mam metodę test() która jest protected w klasie Singletonu. Chce napisać klaskę która będzie pobierać instancję tego singletonu a jednocześnie przebije metodę test().


Another jam from the world for the jam from the voices of the world......
KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:6 miesięcy
  • Postów:2514
0

jesteś pewien, że to ma być singleton?


░█░█░█░█░█░█░█░█░█░█░█░
lipkerson
100% Czytam o tym i jedyny wniosek, który na razie widzę jest taki, ze singleton bazowy musi być napisany pewnym sposobem (Creator?) Nie znalazłem jednak exampelka. Z drugiej strony singleton ten z jakiegoś powodu ma metodę protected - po co dawaliby protected jakby w jakiś sposób nie można było tego przebić?
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Rozumiem że ta chroniona metoda jest używana w jakichś innych metodach i dlatego chciałbyś zmienić jej zachowanie?
To się nazywa Template Method -> zrób abstrakcyjną klasę bazową która zawiera metodę test jako abstract (reszta kodu może pozostać nie zmieniona).
Następnie zrób klasę dziedziczącą z tej bazowej gdzie test() wygląda tak jak teraz.
Następnie zrób swoja klasę dziedziczącą z tej bazowej z nową implementacją test().


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
lipkerson
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 2 lata
0

Ciężko mi pojąć to: może na konkretach. Klasa NativeLibrary z pakietu com.sun.jna

Interesują mnie dwie metody

Kopiuj
 protected void finalize() {
        dispose();
    }

    public void dispose() {
        synchronized(libraries) {
            libraries.remove(getName() + options);
            File file = getFile();
            if (file != null) {
                libraries.remove(file.getAbsolutePath() + options);
                libraries.remove(file.getName() + options);
            }
        }
        synchronized(this) {
            if (handle != 0) {
                close(handle);
                handle = 0;
            }
        }
    }

Klasa jest w duża więc nie będe wklejał całej.

Nie rozumiem jak będą obsługiwane metody, które nie przebiję. Nie mogę przecież dać super - czy całość muszę po prostu przepisać?


Another jam from the world for the jam from the voices of the world......
iooi
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
  • Postów:573
0

Czy to musi być dziedziczone (bo tego nie zrobisz)? Nie możesz po prostu delegować do tego obiektu?
To protected jest tylko dlatego, że private nie mogłoby być - w klasie Object finalize jest protected.

edytowany 3x, ostatnio: iooi

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.