Skip to content

Instantly share code, notes, and snippets.

@miensol
Created July 12, 2015 19:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miensol/7872540e0e2d166bc975 to your computer and use it in GitHub Desktop.
Save miensol/7872540e0e2d166bc975 to your computer and use it in GitHub Desktop.
public abstract class UserBehavior {
private boolean shouldRunDefault;
public void byDefault(UserReference reference){}
public void onAnonymous(UserReference user){
shouldRunDefault = true;
}
public void onRegular(RegularUserReference user) {
shouldRunDefault = true;
}
public void onPremium(RegularUserReference user) {
shouldRunDefault = true;
}
public void dispatch(CurrentUserProvider provider){
UserReference userReference = provider.getCurrentUserReference();
shouldRunDefault = false;
userReference.dispatchBehavior(this);
if(shouldRunDefault){
shouldRunDefault = false;
byDefault(userReference);
}
}
}
class MyActivity extends Activity {
@Inject
CurrentUserProvider _userProvider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new UserBehavior(){
@Override
public void byDefault(UserReference reference) {
setContentView(R.layout.premium);
}
@Override
public void onPremium(RegularUserReference user) {
setContentView(R.layout.premium);
}
}.dispatch(_userProvider);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment