Жизнеспособность GWT Place Class жизнеспособность - PullRequest
0 голосов
/ 26 августа 2011

У меня есть мысленные эксперименты, исследующие жизнеспособность улучшения класса Place.Предполагая, что Google предоставит нам любезность такого усовершенствования, будет ли полезным следующее усовершенствование класса Place?

Допустим, что класс Place улучшен, чтобы иметь метод

setActivity(Activity act)

Тогда мы сможем сделать это:

public class StartActivity extends AbstractActivity implements Presenter {

    private ClientFactory clientFactory;
    private String name;

    public StartActivity(StartPlace place, ClientFactory clientFactory) {
        this.clientFactory = clientFactory;
        this.name = place.getName();
        place.setActivity(this);
    }
}

Так что ActivityMapper будет настолько простым ...

public class DenLapehActivityMapper
implements ActivityMapper{
    @Override
    public Activity getActivity(Place place){
            return place.getActivity();
    }
}

Однако, мой мысленный эксперимент, взвешивающий текущую ситуацию,ведет меня к необходимости сделать это

abstract public class DenLapehPlace
extends  Place{
    private Activity activity;

    public Activity getActivity(){
        return activity;
    }

    public void setActivity(Activity activity){
        this.activity = activity;
    }
}

public class DenLapehActivityMapper
implements ActivityMapper{
    @Override
    public Activity getActivity(Place place){
        if (place instanceof DenLapehPlace)
            return ((DenLapehPlace)place).getActivity();

        return null;
    }
}

Или, что еще хуже, следуя примерам / учебникам ...

public class DenLapehActivityMapper
implements ActivityMapper{
    @Override
    public Activity getActivity(Place place){

        if (place instanceof AyamDenLapehPlace)
            return KurungAyamActivity;
        if (place instanceof ItekDenLapehPlace)
            return KurungItekActivity;
        if (place instanceof KabauDenLapehPlace)
            return KurungKabauActivity;
        if (place instanceof KancilDenLapehPlace)
            return KurungKancilActivity;        
        etc, etc, etc ...

        return null;
    }
}

Если бы вы были командой разработчиков GWT, не было бы каких-либо техническихмотивация (или демотивация), чтобы сделать это изменение?Еще лучше, если вы являетесь командой разработчиков GWT.почему бы вам не сделать это изменение?

1 Ответ

2 голосов
/ 27 августа 2011

Просто потому, что в одном конкретном месте ожидается множество мероприятий.

См. http://blog.ltgt.net/gwt-21-activities/ и http://blog.ltgt.net/gwt-21-activities-nesting-yagni/

...