-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


Clean Architecture

, 11 2017 . 10:39 +

, Clean Architecture . , , , . , . Clean Architecture .


, . . , . , , .



2011 Robert C. Martin, Uncle Bob, Screaming Architecture, , , , . , Uncle Bob . 2012 The Clean Architecture, .
.


, , Clean Architecture:



Android- Clean Architecting Android...The clean way?, Fernando Cejas. Clean Architecture . . Fernando :


  Fernando Cejas

, , domain - Interactors Boundaries, . . . ( - ). , - , - , ,


!


lean Architecture


Clean Architecture , , :


  • ;
  • UI;
  • , .

Dependency Rule ( ).


Dependency Rule


Dependency Rule , . - , UI, .. , .


: (, , , ), , .


, , .



Uncle Bob 4 :


  • Entities. - .
  • Use Cases (Interactors). .
  • Interface Adapters. Use Cases . Presenter MVP, Gateways ( ).
  • Frameworks. , : UI, , http-, ..

, , . .



Boundaries, : . (Input/OutputPort). , ( Dependency Rule), .



( ).


, Controller InputPort, UseCase, UseCase OutputPort, Presenter. , UseCase.


, ( D SOLID). , UseCase Presentera ( Dependency Rule), , Presenter .


, , UseCase Gateway/Repository. , UseCases.


, , . DTO HashMap, . ( ).



, Clean Architecture . , - , (, , , ). overengineering.


Controllers. - frontenda, Ruby On Rails. Controller, , Presenter, View.
, android- Controllers .


Uncle Bob , 4. , Dependency Rule .


Fernando Cejas, , . . , Domain Layer Interactors ( UseCase), Entities.


Fernando , Clean Android-, .


:


Uncle Boba c Fernando Cejasa . , . , . - , , Controller, . , !


.
, . Gateways Repositories, .. .



.
: , - .



, . Dependency Rule.


UI . , :



, Fernando Cejas. . . , .


, , Fernando.


   Fernando Cejas

c . , , , Fernando 4 . . Domain UseCases Entities.


. UI backend . :


   UI

.
Presenter, Use Case. Use Case Repository. Repository -, Entity, UseCase. Use Case Entity. , , , Presenter. , , UI.


( , , ) Boundaries, .


, , , .


: ,


, - , ( UseCases Entities). .


, . (Boundaries), DTO, (Interactors UseCases, ).


, , Uncle Boba. :


    Uncle Bob

? . Entities UseCases , , ( ) .


C Boundaries , Gateway . Request/ResponseModel DTO . , .


Controller , . Presenter.


ViewModel ViewModel MVVM ViewModel Architecture Components. DTO View, View . .


UseCases Interactor, Boundaries , , DTO . , .


: Entities


Entities .
, ( ) , , DTO.


, , Entity , JSON data-, DTO , Interactor

, .


Entities?


POJO-, Interactor. . .


Uncle Bob , Entities , , , .
- , Entities - , .


, : Entities , . , Interactor Entity Gateway. , POJO .


, Entity .
, , .


Uncle Bob, :
Uncle Bob , Entities -, . . Entities , , -, .


- , Gateways Entities , :
Gteway , , , Entities, Gateway .


class MyEntity { private MyDataStructure data;}


class MyEntity extends MyDataStructure {...} 

, :


And remember, we are all pirates by nature; and the rules I'm talking about here are really more like guidelines
( : , , , , )

, , . - , .


, Entities :


  • Entities , , ( , );
  • DTO, .

, , Entities UseCases, .


: UseCase / Interactor


UseCase Interactor. : Interactor . : Interactore UseCase?.


Interactora , . :
...interactor object that implements the use case by invoking business objects.
:
Interactor , use case ( ), - (Entities).


Use Case ?
Uncle Bob Object-Oriented Software Engineering: A Use Case Driven Approach, Ivar Jacobson 1992 , , Use Case.


Use case , , .


, :


 Use Case

Use Case , .


, , . .


Use Casea, .
:


  • . .
  • id . , , . - .
  • id . .
    , id , , , . Use Case .

Ivar Jacobson Use Case , ControlObject.
Uncle Bob , , Controller MVC Interactor. , UseCase.
.


, Interactor use case execute() , . .


.


- , Interactora . . .


Interactor , use case.
, , . Interactor, .


: UseCase, . .
, UseCase Interactor , .


Interactor UseCase, : Interactor/UseCase , use case ( ).


, , -, , Repository.



- , . Uncle Bob Gateway, Repository.


Repository


Repository?
, , ( Fernando Cejas ), .


Repository - . , , .


Android- Repository , .


Hannes Dorfmann.


Gateway


Repository, , login() (, Repository, , ).


, Gateway , . Gateway , API . , , .


, .


Repository/Gateway Interactor?


, . !
Repository Interactor.


, , , Repository Presentera, Interactor.
Repository , Dependency Rule Repository . Interactor . Interactor, , , proxy-interactor, , .


, , Interactor, , , Interactor , . .


:


, . .


DTO Entities . , . Dependency Rule .


. .


DTO :
+ ;
+ - ;
- ;
- .


DTO Enitities:
+ ;
+ ;
- ;
- DTO, .


.


:
, / , ( ). , API .
, ,
.


: Interactore


, . , c:
So when we pass data across a boundary, it is always in the form that is most convenient for the inner circle.
( , )


Interactor .
Interface Adapters, Presenter Repository.


?


. API . , login() Profile OrderState. , , Repository.


LoginResponse Profile OrderState , Interactore Repository?


Interactore. , .. .


Repository. :


  • Interactore, LoginResponse - . , Dependency Rule, LoginResponse Interactora (UseCases) Entities. , .
  • use case. : , . : , .

Interactor, , .


Interactor Repository?


Interactor Repository. , Repository/Gateway Interactor?.


Clean Architecture .
:


  • .
  • .

, , . , . .


RxJava Clean Architecture


Android- RxJava. , Fernando Cejas , RxJava Clean Architecture.


, , , , Boundaries ( Dependency Rule) Observable Subscriber.


, RxJava , . , Clean Architecture.


, RxJava . Java 9 util.concurrent.Flow, Reactive Streams, RxJava2. - RxJava, .


: Clean Architecture MVP?


, ? .
:


  • . Clean .
  • , MVP, , UI. , [ ][25] dmdev.

: Clean Architecture


. Google Architecture Components.


- . . .


, . , , , . , .


, , .


!


. . Clean Architecture, , , !

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/335382/


: [1] []
 

:
: 

: ( )

:

  URL