Created
June 15, 2015 20:02
-
-
Save exallium/e72c063c42640ba67ca6 to your computer and use it in GitHub Desktop.
rxmvc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package controller | |
public class Controller { | |
val editText : RxEditText<User> = // ... | |
val model : Model<User> = // ... | |
val modelObserver: Observer<User>? = null | |
val editTextObserver: Observer<User>? = null | |
public fun onCreate() { | |
modelObserver = model.getObserver() | |
editTextObserver = editText.getObserver() | |
editText.getObservable().subscribe(modelObserver) | |
model.getObservable().subscribe(editTextObserver) | |
} | |
public fun onDestroy() { | |
modelObserver?.onComplete() | |
editTextObserver?.onComplete() | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package model | |
public class Entity | |
public data class User(var name: String) : Entity() | |
public interface Model<T: Entity> { | |
fun getObservable(): Observable<T> | |
fun getObserver(): Observer<T> | |
} | |
class UserModel : Model<User> { | |
public fun getObservable(): Observable<User> { | |
return Observable.create(/* select * from users.... */) | |
.mergeWith(/* wherever updates should come from */) | |
} | |
public fun getObserver(): Observer<User> { | |
return object : Subscriber<User>() { | |
/* ... onComplete should unsubscribe ...*/ | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package view | |
public class RxEditText<T : Entity> : EditText { | |
public fun getObservable(): Observable<T> { | |
// ... | |
} | |
public fun getObserver(): Observer<T> { | |
// ... onComplete should unsubscribe | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment