Jak uzyc metody w kompozycji bez tworzenia nowego obiektu

0

Mam dział druku składający się z 3 drukarni drukarnia po zakończeniu metody drukuj ma o tym powiadamiać dział druku a ten ma dodawać to co się wydrukowało do zasobów jakiś sposób na przekazanie tej informacji do działu druku z metody drukarni?

0

" Chodzi o to czy jest jakis sposob aby drukarnia skladajaca sie na dzial druku byla w stanie uzyc metody z tego dzialu druku bez tworzenia kolejnego obiektu klasy dzialdruku".
To jaki problem, DzialDruku może być interfejsem, a Drukarnia i może inne klasy dziedziczą go i implementują sobie odpowiednie metody.

0

Tutaj wątek, między innymi, o kompozycji: Agregacja, kompozycja, asocjacja . Jeśli tak, to to Dzialdruku jest "właścicielem" obiektu Drukarnia i to on może sobie wywołać jej [drukarni] metodę i zapisać gdzieś wynik.

0

"To wiem tylko czy mozna jakos to odwrocic?" Pewnie, że można, ale wtedy Zmienisz cały schemat programu (drukarnia będzie właścicielem działu druku), Jesteś pewien, że o to Ci chodzi?

0

Mam narzucone to ze drukarnia jest komponentem i ma informowac dział druku w jakis sposob. wydawalo mi sie ze wywolanie metody z dzialudruku na koniec metody z drukarnijest dobrym sposobem powiadomienia.

0

Tak, tak będzie Ok, metoda z działu druku przyjmuje coś co zwraca drukarnia (wydruk, info gdzie on jest, w bazie czy coś) i zapisuje to sobie gdzieś; w czym, w takim razie problem?

class DzialDruku {
	// gdzieś tutaj też definicja klasy Drukarnia i reszta kodu
	Drukarnia wydruk = new Drukarnia(<ewentualnie parametry>);
	// drukarnia drukuje.....
	void zapiszWydrukDoBazy(Drukarnia param <ewentualnie inne>);
	// i dalej
}
1

Ale gdzie dokładnie jest problem? o_O Czemu DzialDruku nie może przekazać do Drukarni referencji na siebie?

class Drukarnia{
    private final DzialDruku parent;
    public Drukarnia(DzialDruku  p){
        this.parent=p;
    }

    public void powiadom(){
        parent.skonczylemDrukowac();
    }
}
class DzialDruku{
    private final Drukarnia drukarnia;
    public DzialDruku(){
        drukarnia = new Drukarnia(this);
    }
}
0

No okej a moze jakos powiadomic dzial handlowy z ktorym nic go nie laczy?

1

No okej a moze jakos powiadomic dzial handlowy z ktorym nic go nie laczy?

No może, jakimś middleware komunikacyjnym na przykład. Może wrzucić taka informacje do kolejki, z której ten drugi sobie czyta. Albo może mu to wysłać pocztą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1