Android deklarative Programmierung von Client-Server-Anwendungen

Deklarative Programmierung kann die Produktivität von Programmierern erheblich steigern. Insbesondere die DePro-Bibliothek , auf die Sie beim Programmieren von Client-Server-Anwendungen aufmerksam gemacht werden, bietet eine 3- bis 5-fache Produktivitätssteigerung im Vergleich zu wichtigen Sprachen wie z. B. Java und Kotlin.


Die Client-Server-Anwendungsklasse ist groĂź genug. Es umfasst Arten von Anwendungen wie: M-Commerce, P2P-Handel, Dienstleistungen, Banken und Finanzen, Reisen, Instant Messenger und soziale Netzwerke, Fitness und Gesundheit usw.


Diese Beschleunigung ist auf die Tatsache zurĂĽckzufĂĽhren, dass in der deklarativen Programmierung nur "WAS muss empfangen werden?" Und nicht "WIE geht das?" Beschrieben wird.


Betrachten Sie das folgende einfache Beispiel, um die Unterschiede zwischen deklarativer und imperativer Programmierung zu veranschaulichen.


In der in der Abbildung gezeigten Aktivität befindet sich ein Fragment (eingekreist durch eine rote Linie).


Bild

Das Markup fĂĽr dieses Fragment ist einfach: Es gibt nur eine RecyclerView mit ID Recycler. Das Markup fĂĽr Listenelemente befindet sich in der Datei item.xml. Daten befinden sich unter . Die Namen (ID) der Markup-Elemente stimmen mit den entsprechenden Namen in den vom Server kommenden Daten ĂĽberein.


(). (MVP).


.


Item – , .


Adapter – RecyclerView.Adapter. , List. , , : getItemCount – ; onCreateViewHolder – View item.xml MyHolder; onBindViewHolder — MyHolder ( ). MyHolder .

Presenter — RxJava Retrofit. URL. iView ( MyFragment).


iView – MyFragment.


MyFragment – Fragment. . ( List.) , . , , , .

. , . — . URL, RecyclerView item.xml.


— , , . , :


recycler(URL, R.id.recycler, R.layout.item);

DePro. , :


component(TC.RECYCLER, model(URL), view(R.id.recycler, R.layout.item_news))

component – ; TC.RECYCLER – ( RecyclerView); model(URL) – , URL; view id recycler- .


, .


DePro . (, , , ...) .


. :


activity( , id )


: activity(“splash”, R.layout.activity_splash)
.


: fragment(“auth_phone”, R.layout.fragment_auth_phone)


. MVP.


:


.component(TYPE, model(...), view(...), navigator(...))

TYPE — , SPINNER, DRAWER, RECYCLER, MENU, MAP, PAGER .. model(...) . , , URL. view(...) , . navigator(...) . , navigator(start(R.id.video, YOUTUBE)) , R.id.video YOUTUBE. navigator- .


, :


 activity(String name, int layoutId)
        .component(TYPE, model(...), view(...), navigator(...))
        . . .
        .component(TYPE, model(...), view(...), navigator(...));

5 — 10 .


DePro :


  • java (SLOC) 40-50 .
  • ( XML — ) 15 — 20 .
  • ( XML — ) 3 — 5 .
  • 2 — 3 .

. Github.


Im nächsten Artikel beschreiben wir den gesamten Zyklus der Anwendungsentwicklung mithilfe der DePro-Bibliothek.


All Articles