3.5グローバル変数ソースの消滅

33894 ワード

1.
public class GlobalVariables {
    public static UserBean User;
}

 
2. 
public class GlobalVariables implements Serializable, Cloneable {
    /**
     * @Fields: serialVersionUID
     */
    private static final long serialVersionUID = 1L;

    private static GlobalVariables instance;

    private GlobalVariables() {

    }

    public static GlobalVariables getInstance() {
        if (instance == null) {
            Object object = Utils.restoreObject(
                            AppConstants.CACHEDIR + TAG);
            if(object == null) {    //App , 
                object = new GlobalVariables();
                Utils.saveObject(
                        AppConstants.CACHEDIR + TAG, object);
            }
            
            instance = (GlobalVariables)object;
        }

        return instance;
    }
    
    public final static String TAG = "GlobalVariables";
    
    private UserBean user;

    public UserBean getUser() {
        return user;
    }

    public void setUser(UserBean user) {
        this.user = user;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
    
    // ————— 3 ————————
    public GlobalVariables readResolve() 
            throws ObjectStreamException,
            CloneNotSupportedException {
        instance = (GlobalVariables) this.clone();
        return instance;
    }

    private void readObject(ObjectInputStream ois) 
            throws IOException, ClassNotFoundException {
        ois.defaultReadObject();
    }

    public Object Clone() throws CloneNotSupportedException {
        return super.clone();
    }
    
    public void reset() {
        user = null;

        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
}

 
3.
    public static final void saveObject(String path, Object saveObject) {
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;
        File f = new File(path);
        try {
            fos = new FileOutputStream(f);
            oos = new ObjectOutputStream(fos);
            oos.writeObject(saveObject);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (oos != null) {
                    oos.close();
                }
                if (fos != null) {
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

 
4.
    public static final Object restoreObject(String path) {
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        Object object = null;
        File f = new File(path);
        if (!f.exists()) {
            return null;
        }
        try {
            fis = new FileInputStream(f);
            ois = new ObjectInputStream(fis);
            object = ois.readObject();
            return object;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (ois != null) {
                    ois.close();
                }
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return object;
    }    

 
5.
private void gotoLoginActivity() {
        UserBean user = new UserBean();
        user.setUserName("Jianqiang");
        user.setCountry("Beijing");
        user.setAge(32);        

        Intent intent = new Intent(LoginNew2Activity.this, 
                PersonCenterActivity.class);
        
        GlobalVariables.getInstance().setUser(user);
        
        startActivity(intent);
    }

 
6.
protected void initVariables() {
        UserBean user = GlobalVariables.getInstance().getUser(); 
        int age = user.getAge();
    }

 
7.
GlobalVariables.getInstance().reset();

 
8.
    public void reset() {
        user = null;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }

 
9.
public class GlobalVariables3 implements Serializable, Cloneable {
    /**
     * @Fields: serialVersionUID
     */
    private static final long serialVersionUID = 1L;

    private static GlobalVariables3 instance;

    private GlobalVariables3() {

    }

    public static GlobalVariables3 getInstance() {
        if (instance == null) {
            Object object = Utils.restoreObject(AppConstants.CACHEDIR + TAG);
            if(object == null) {    //App , , 
                object = new GlobalVariables3();
                Utils.saveObject(AppConstants.CACHEDIR + TAG, object);
            }
            
            instance = (GlobalVariables3)object;
        }

        return instance;
    }
    
    public final static String TAG = "GlobalVariables3";
    
    private String userName;
    private String nickName;
    private String country;

    public void reset() {
        userName = null;
        nickName = null;
        country = null;

        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
    
    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
    
    // ----------- 3 -----------------
    public GlobalVariables3 readResolve() throws ObjectStreamException,
            CloneNotSupportedException {
        instance = (GlobalVariables3) this.clone();
        return instance;
    }

    private void readObject(ObjectInputStream ois) throws IOException,
            ClassNotFoundException {
        ois.defaultReadObject();
    }

    public Object Clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

 
10.
public class GlobalVariables4 implements Serializable, Cloneable {
    /**
     * @Fields: serialVersionUID
     */
    private static final long serialVersionUID = 1L;

    private static GlobalVariables4 instance;

    private GlobalVariables4() {

    }

    public static GlobalVariables4 getInstance() {
        if (instance == null) {
            Object object = Utils.restoreObject(AppConstants.CACHEDIR + TAG);
            if(object == null) {    //App , , 
                object = new GlobalVariables4();
                Utils.saveObject(AppConstants.CACHEDIR + TAG, object);
            }
            
            instance = (GlobalVariables4)object;
        }

        return instance;
    }
    
    public final static String TAG = "GlobalVariables3";
    
    private String userName;
    private String nickName;
    private String country;
    private HashMap<String, String> rules;
    private String strCinema;
    private String strPersons;

    public void reset() {
        userName = null;
        nickName = null;
        country = null;
        
        rules = null;
        strCinema = null;
        strPersons = null;
        guides = null;

        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName, boolean needSave) {
        this.userName = userName;        
        if(needSave) {
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
        }
    }
    
    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName, boolean needSave) {
        this.nickName = nickName;
        if(needSave) {
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
        }
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country, boolean needSave) {
        this.country = country;
        if(needSave) {
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
        }
    }
    
    public HashMap<String, String> getRules() {
        return rules;
    }

    public void setRules(HashMap<String, String> rules) {
        this.rules = rules;
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
    
    public JSONObject getCinema() {
        if(strCinema == null)
            return null;

        try {
            return new JSONObject(strCinema);
        } catch (JSONException e) {
            return null;
        }
    }

    public void setCinema(JSONObject cinema) {
        if(cinema == null) {
            this.strCinema = null;
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
            return;
        }

        this.strCinema = cinema.toString();
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }

    public JSONArray getPersons() {
        if(strPersons == null)
            return null;

        try {
            return new JSONArray(strPersons);
        } catch (JSONException e) {
            return null;
        }
    }

    public void setPersons(JSONArray persons) {
        if(persons == null) {
            this.strPersons = null;
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
            return;
        }

        this.strPersons = persons.toString();
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
    
    HashMap<String, Object> guides;
    
    public HashMap<String, Object> getGuides() {
        return guides;
    }

    public void setGuides(HashMap<String, Object> guides) {
        if (guides == null) {
            this.guides = new HashMap<String, Object>();
            Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
            return;
        }

        this.guides = new HashMap<String, Object>();
        Set set = guides.entrySet();
        java.util.Iterator it = guides.entrySet().iterator();
        while (it.hasNext()) {
            java.util.Map.Entry entry = (java.util.Map.Entry) it.next();

            Object value = entry.getValue();
            String key = String.valueOf(entry.getKey());
            
            this.guides.put(key, String.valueOf(value));
        }

        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);        
    }
    
    // ----------- 3 -----------------
    public GlobalVariables4 readResolve() throws ObjectStreamException,
            CloneNotSupportedException {
        instance = (GlobalVariables4) this.clone();
        return instance;
    }

    private void readObject(ObjectInputStream ois) throws IOException,
            ClassNotFoundException {
        ois.defaultReadObject();
    }

    public Object Clone() throws CloneNotSupportedException {
        return super.clone();
    }
    
    public void save() {
        Utils.saveObject(AppConstants.CACHEDIR + TAG, this);
    }
}