Wzorce projektowe: różnica między BRIDGE, STRATEGY a COMMANDER

0

Jak rozumiecie różnice między tymi wzorcami?

Czytam i czytam i już mi się wszystk skapuściło: dla mnie to jest jedno i to samo.

0

Z ciekawości, duże jest parcie w pracy na wzorce? czy to raczej domena non-Janush Investments?

1

Nie wiem co to Commander, nie pomyliło się czasem z Command?
Co do Bridge to różni się tym od Strategy że Strategy generalnie dotyczy jednego interfejsu, tzn masz jakiś interfejs i do niego ileśtam implementacji. A Bridge to taka fancy nazwa na powiązanie ze sobą kilku takich obiektów.
Wyobraź sobie że chcesz mieć konfiguracje aplikacji dostępną przez interfejs Configuration i ona udostępnia jakieśtam parametry konfiguracji. Załóżmy że konfiguracje mogą przychodzić w różnych typach plików, txt, json, xml. Moglibyśmy więc założyć ze Configuration polega na jakimś interfejsie InputFile i z jego metod czyta sobie dane z plików.

Zobacz co sie stało -> mamy teraz dwie hierarchie klas, jedną związaną z konfiguracją a drugą z obsługą plików różnego typu, a jednocześnie nie są ze sobą nijak związane mimo że ewidentnie kooperują!
Alternatywą byłoby po prostu na pałe zrobienie sobie z Configuration klas implementujących, które w sobie zawierałyby kod zwiazany z obsługą plików ale pojawia sie kwestia łamania SRP, niemożliwości re-użycia tej obsługi plików itd.

0

wtedy to jest strategy czy bridge czy co?


public class Configuration {
	public void config(InputFile input) {
		input.congif();
	}
}


public interface InputFile{
	public void config();
}

public class InputTxt implements InputFile{
	@Override
	public void config(){
		/* difficult actions */
		System.out.println("txt configurated");
	}
}

public class InputXml implements InputFile{
	@Override
	public void config(){
		/* difficult actions */
		System.out.println("xml configurated");
	}
}

public class InputJson implements InputFile{
	@Override
	public void config(){
		/* difficult actions */
		System.out.println("json configurated");
	}
}

0

Nie no teraz to zrobiłeś bez sensu i teraz to jest zwykłe strategy. Nie rozumiesz co tam wyżej napisałem? o_O

  1. InputFile nie ma żadnego związku z konfiguracją, ma jakieśtam swoje metody do czytania danych z pliku i tyle
  2. Configuration to INTERFEJS który ma swoje implementacje zgodnie ze Strategy i opiera się na jakimś InputFile. Więc masz mieć 2 zupełnie niezależne hierarchie klas.

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