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.
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.
Z ciekawości, duże jest parcie w pracy na wzorce? czy to raczej domena non-Janush Investments?
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.
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");
}
}
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
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.