package Ġcom . jn . k ik uk t . mvp Ċ Ċ import Ġandroidx . lifecycle . Default Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġcom . jn . k ik uk t . common . utils . Clazz Ċ import Ġcom . jn . k ik uk t . net . ret rofit . Base Http Result Ċ import Ġcom . jn . k ik uk t . net . rx java . Rx Base Observer Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ Ċ /** Ċ Ġ* ĠAuthor ï¼ļ St ev ie . Ch en ĠTime ï¼ļ 2 0 2 0 / 7 / 1 5 Ċ Ġ* ĠClass ĠComment ï¼ļ M VP Ċ Ġ*/ Ċ interface ĠIB Model Ċ interface ĠIB View Ċ interface ĠIB Presenter Ġ: ĠIDisposable View , ĠDefault Lifecycle Observer Ġ{ ĊĊĠĠĠ Ġfun Ġattach View ( view : ĠIB View ?) ĊĊĠĠĠ Ġfun Ġdetach View () ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispose () ĊĠĠĠĠĠĠĠ Ġdetach View () ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠBase Model Ġ: ĠIB Model Ċ abstract Ġclass ĠBase Presenter < V Ġ: ĠIB View , ĠM Ġ: ĠIB Model > Ġ: ĠIB Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġview : ĠV ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġval Ġm View : ĠV ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġview !! ĊĠĠĠ Ġprotected Ġval Ġm Model : ĠM Ġby Ġlazy Ġ{ ĠCl azz . getClass < M >( this , Ġarguments Position Ġ= Ġ 1 ). newInstance () Ġ} ĊĠĠĠ Ġoverride Ġvar Ġm Composite Disposable : ĠComposite Disposable ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġattach View ( view : ĠIB View ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview Ġas ? ĠV ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach View () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠRx Base Presenter Observer < T Ġ: ĠBase Http Result < V >, ĠV >( ĊĠĠĠ Ġprivate Ġval Ġi B Presenter : ĠIB Presenter , ĊĠĠĠ Ġerror Type : ĠInt , ĊĠĠĠ Ġon Subscribe : Ġ(( d : ĠDis posable ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ ĠonSuccess : Ġ( v : ĠV ) Ġ-> ĠUnit , ĊĠĠĠ Ġon Response : Ġ(( t : ĠT ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġon Failure : Ġ(( e : ĠThrowable , Ġerror Msg : ĠString ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĊĠĠĠ ĠRx Base Observer < T , ĠV >( error Type , Ġon Subscribe , ĠonSuccess , Ġon Response , Ġon Failure ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Subscribe ( d ) ĊĠĠĠĠĠĠĠ Ġi B Presenter . add Disposable ( d ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠIDisposable View Ġ{ ĊĊĠĠĠ Ġvar Ġm Composite Disposable : ĠComposite Disposable ? ĊĊĠĠĠ Ġfun Ġadd Disposable ( dis posable : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Composite Disposable Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Composite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġm Composite Disposable ?. add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Composite Disposable ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Disposed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }