java - Contract design pattern widely used android -


i have noticed developers of default apps android use contract pattern. used databases, content providers. contract class final , stores constants, , weird thing me inner interfaces.

public final class clockcontract  protected interface alarmscolumns extends alarmsettingcolumns, basecolumns protected interface instancescolumns extends alarmsettingcolumns, basecolumns  protected interface citiescolumns 

all classes (and interfaces) container constants. approach this. why not define them in each class ? , practice store variables in interfaces.
, weir thing me puprose of inner interfaces . please explain idea of this.
thanks

a contract list of definitions used group of specified purposes. practice because people not misuse classes , interfaces in unrelated domains.

public final class databasecontract { /***inner class defines table contents.***/ public static abstract class entry implements basecolumns {     public static final string             table_name = "alarms",             column_name_entry_day = "day",             column_name_entry_hour = "hour",             column_name_entry_minute = "minute",             column_name_entry_status = "status",             column_name_entry_alarm_text = "alarmtext"; }  private databasecontract(){}  public static void init(context context){     new databasehelper(context); }  public static cursor selectall(context context){     string sql = "select * " + table_name;      return new databasehelper(context).getreadabledatabase().rawquery(sql,null); }  public static void insert(context context, contentvalues values){     new databasehelper(context).getwritabledatabase().insert(table_name, null, values); }  public static void update(context context, int id, contentvalues values){     new databasehelper(context).getwritabledatabase().update(table_name, values, entry._id + " = " + id, null); }  public static void remove(context context, int id){     new databasehelper(context).getwritabledatabase().delete(table_name, entry._id + " = " + id, null); }} 

the code above example of contract pattern. obvious see won't use inner class entry anywhere else accessing database. create enumeration support class might want limit input parameters class functions.

if don't need deal multi access variable, can store variable in contract. however, not supposed because contract mean store definitions , protocols. things aren't supposed changed during run time.


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -