Co to jest delegowanie w Javie? Czy ktoś może dać mi odpowiedni przykład?przykład delegacji dotyczący kontekstu Java
22
A
Odpowiedz
15
Jeśli masz na myśli wzorzec delegowania, wikipedia has a great example, written in java.
wierzę już przykładem stronie powyżej jest najlepszy:
interface I {
void f();
void g();
}
class A implements I {
public void f() { System.out.println("A: doing f()"); }
public void g() { System.out.println("A: doing g()"); }
}
class B implements I {
public void f() { System.out.println("B: doing f()"); }
public void g() { System.out.println("B: doing g()"); }
}
class C implements I {
// delegation
I i = new A();
public void f() { i.f(); }
public void g() { i.g(); }
// normal attributes
void toA() { i = new A(); }
void toB() { i = new B(); }
}
public class Main {
public static void main(String[] args) {
C c = new C();
c.f(); // output: A: doing f()
c.g(); // output: A: doing g()
c.toB();
c.f(); // output: B: doing f()
c.g(); // output: B: doing g()
}
}
39
To delegacja - dokładnie tak samo jak w realnym świecie:
public interface Worker() {
public Result work();
}
public class Secretary() implements Worker {
public Result work() {
Result myResult = new Result();
return myResult;
}
}
public class Boss() implements Worker {
private Secretary secretary;
public Result work() {
return secretary.work();
}
}
(Dodane Pracownik interfejsu, aby zbliżyć się do wzorzec Delegatora)
2
Ten sam przykład, co aioobe, ale zmieniono nazwy klas na bardziej intuicyjne. Porównywanie analogii do rzeczywistych przykładów.
public static void main(String[] args) {
Boss boss = new Boss();
boss.toDeveloper();
boss.f();
boss.g();
boss.toSrDeveloper();
boss.f();
boss.g();
}
interface I {
void f();
void g();
}
class Developer implements I {
public void f() {
System.out.println("Developer: f() is too hard for me.");
}
public void g() {
System.out.println("Developer: g() is not in my domain.");
}
}
class SrDeveloper implements I {
public void f() {
System.out.println("Sr. Developer: Okay, I'll see f()");
}
public void g() {
System.out.println("Sr. Developer: I'll do g() too.");
}
}
class Boss implements I {
// delegation
I i;
public void f() {
i.f();
}
public void g() {
i.g();
}
void toDeveloper() {
i = new Developer();
}
void toSrDeveloper() {
i = new SrDeveloper();
}
}
Powiązane problemy
- 1. Kiedy używać delegacji zamiast dziedziczenia?
- 2. Samouczek dotyczący aplikacji internetowych Java dla początkujących
- 3. Wyjaśnienie klasy kontekstu wykonania Java
- 4. C# równoważne Java przykład inicjatora
- 5. Jak uruchomić przykład Hbase Java?
- 6. Przykład użycia LibSVM w java
- 7. Przykładowy zestaw bitów Java Przykład
- 8. Wyjątek dotyczący brakujących danych
- 9. Konfiguracja transakcji dla skonfigurowanego kontekstu Spring Java
- 10. Samouczek dotyczący statystyki CruiseControl.net
- 11. Samouczek dotyczący kryteriów JPA
- 12. Indeks dotyczący Varcharu?
- 13. Przykład pliku Travis CI yml dla java
- 14. dać przykład stosując cyirillic w regex Java
- 15. Przykład Java z enkapsulacją, polimorfizmem i dziedziczeniem?
- 16. Dobry przykład współbieżności Java kontra Clojure
- 17. Przykład wykresu kołowego JasperReport Przykład
- 18. Zmienna zakres delegacji zdarzeń jquery z kolejnymi połączeniami
- 19. qt Przykład kamery nie działa
- 20. przykład kontekst Mkdir php
- 21. Komunikat o błędzie dotyczący IEnumerable.GetEnumerator()
- 22. Jak dostosować podpis dotyczący shadowbox.js?
- 23. Wyciek pamięci Golang dotyczący Goroutines
- 24. Dobry samouczek dotyczący protokołu FIX?
- 25. Problem dotyczący typu Scala (wnioskowania)?
- 26. Dowolny dobry samouczek dotyczący FakeItEasy
- 27. Obsługa wystąpień menedżera kontekstu w innym menedżerze kontekstu
- 28. Przykład makiety RSpec Przykład
- 29. Przekazywanie właściwości do kontekstu Spring
- 30. przykład
dziękuję! Korzyścią delegacji z dziedziczenia jest zmiana środowiska wykonawczego, ale wszystkie przykłady, które mogłem wymyślić, przypominają kompozycję bardziej niż delegację. Ten przykład wyraźnie pokazuje, co autorzy artykułów, które przeczytałem, mają na myśli. – Chaitanya