项目中我们会经常用到状态标志来控制逻辑,然后对状态标志进行修改从而达到控制不同逻辑执行,然而当我们对一个状态标志修改过多时,往往会导致代码的可读性变差,出错率升高。那我们要如何解决这样的一个问题的出现呢?我的想法是把状态标志提取到一个类中,然后在该类里面进行状态的获取和修改操作即可。直接贴代码,比较简单。
public class FlagFactory {
private final static String TAG = "FlagFactory";
private Boolean flag;
private Boolean tempFlag;
public FlagFactory(Boolean defaultFlag) {
this.flag = defaultFlag;
this.tempFlag=defaultFlag;
logFlag("初始化后");
}
public Boolean getFlag() {
return flag;
}
public void logFlag(){
logFlag(null);
}
public void logFlag(String log) {
Log.i(TAG, ((log==null||log.equals(""))?(this.hashCode()+"->"):(this.hashCode()+"->"+log+":"))+"flag=" + getFlag());
}
public void logDefaultFlag(){
Log.i(TAG, this.hashCode()+"->"+"defaultFlag=" + tempFlag);
}
public void recovery(){
this.flag=tempFlag;
logFlag("recovery后");
}
public void reverse(){
this.flag=!tempFlag;
logFlag("reverse后");
}
}
使用起来也非常简单:
public class MainActivity extends Activity {
private FlagFactory flagFactory;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
flagFactory=new FlagFactory(true);
button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flagFactory.getFlag()){
flagFactory.reverse();
Toast.makeText(MainActivity.this,"测试一下",Toast.LENGTH_SHORT).show();
}
}
});
}
}
是不是代码里面再也不会出现true,false之类的代码出现啦!代码是不是也变得很清晰了呢?