Tag Archives: mvp4g

Реализация MVP паттерна для GWT – Mvp4g – дополнения

Последнее время мое внимание привлекала технология для разработки RIA – GWT. И как это обычно бывает в каждом подходе и технологии есть свои достоинства и недостатки, и GWT не исключение. Но описание достоинств и недостатков этой технологии гораздо шире и объемнее того, что я хотел бы написать в данном посте. Я хочу сосредоточиться на использовании и о небольших правках, сделанных мной для реализации паттерна MVP – опен-сорс проекта Mvp4g.

Все , что нужно для начало работы с этой реализацией вы можете получить на страницах проекта.

При использовании этого фреймворка у меня возникла необходимость в обеспечении модулярности и возможности указания альтернативного конфигурационного файла.

Модулярность – под модулярностью понимается возможность указания дополнительного конфигурационного файла, который так же будет содержать декларации views,  presenters, services и events,  относящихся только к этому модулю. Так же при использовании GWT 2.x и указании аттрибута async активация данного подуля будет обвернута в RunAsyncCallback вызов, что в свою очередь обеспечит разделение вашего приложения на несколько отдельных частей и загрузка каждой части будет происходить только в случае необходимости. В целом же конфигурационный файл приложения, поддерживающего модульность не отличается от стандартного, за исключением следующего момента:

<module source="modules/module.xml" event="activationEvent" async="true"/>

Где source – указывает на файл конфигурации модуля, event – говорит на какое событие модуль будет активирован и async – указывает будет ли активация модуля обворачиваться в RunAsyncCallback вызов.

Еще одной доработкой является возможность указания дополнительного конфигурационного файла. Данная функциональность может пригодиться в таких случаях как, например, у вас есть админка, которая тоже построена на GWT, но вы не хотите фунционал админки с фронтендом мешать в одну кучу. Что же нужно для этого? Для этого нужно наследовать интерфейс com.mvp4g.client.Mvp4gStarter и аннотровать свой интерфейс с помошью аннотации com.mvp4g.client.Configuration, указав в качестве значения путь к альтернативному конфигурационному файлу. Затем в entry point классе создать имплементацию интерфейса с помощью GWT.create().

Пример интерфейса:

@Configuration("mvp4g-alt-conf.xml")
public interface CustomMvp4Starter extends Mvp4gStarter {}

Пример кода в  entry point классе:

public class TestMvp4gEntryPoint implements EntryPoint {
	private Mvp4gStarter entry;
 
	public void onModuleLoad() {
		entry = GWT.create(CustomMvp4Starter.class);
		entry.start();
	}
}

На этом все, скачать правки можно тут.