Android中的工厂模式,目的就是减少if-else和switch-case的出现,梳理代码的条理,使逻辑更加清晰,下面直接上代码:

1.首先新建一个接口,用来监听我们的操作

public interface StrategyListenter {    /**     *     * @param context 上下文     * @param result  需要操作的数据     * @param isHandled   判断是否进行下一步操作     */    void execute(Context context, int result, boolean[] isHandled);}

2.重点来了,策略工厂类

public class StrategFactory {    private List list = new ArrayList<>();    private static StrategFactory strategFactory = new StrategFactory();    /**     * 单列模式     *     * @return     */    public static StrategFactory init() {        return strategFactory;    }    /**     * 添加具体操作的类     *     * @param listenter     * @return     */    public StrategFactory add(StrategyListenter listenter) {        if (listenter != null) {            list.add(listenter);        }        return this;    }    /**     * 调用接口进行操作     *     * @param context     * @param result  可根据实际情况进行修改     */    public void Scheduled(Context context, int result) {        boolean[] isHandled = {false};        for (StrategyListenter listenter : this.list) {            if (isHandled[0]) {                return;            }            listenter.execute(context, result, isHandled);        }    }}

3.在Application中声明

public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        StrategFactory strategFactory = StrategFactory.init();        strategFactory.add(new NumberOne());        strategFactory.add(new NumberTwo());        strategFactory.add(new NumberThree());        strategFactory.add(new NumberFour());    }}

4.具体的操作类,在这里面可以执行我们想要的操作

public class NumberOne implements StrategyListenter {    @Override    public void execute(Context context, int result, boolean[] isHandled) {        if (result >= 0 && result < 60) {            DilaogHelper.getDilaog(context, "提示信息", "不及格");            isHandled[0] = false;        }    }}

5.最后在MianActivity中应用

public class MainActivity extends AppCompatActivity {    private EditText ed_input;    private Button btn_submit;    private int strInputNumber;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ed_input = (EditText) findViewById(R.id.ed_input);        btn_submit = (Button) findViewById(R.id.btn_submit);        btn_submit.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                strInputNumber = Integer.valueOf(ed_input.getText().toString());                StrategFactory.init().Scheduled(MainActivity.this, strInputNumber);            }        });    }}

6.自己封装的一个对话框帮助类

public class DilaogHelper {    public static void getDilaog(Context context, String title, String message){        new AlertDialog.Builder(context)                .setTitle(title)                .setMessage(message)                .setPositiveButton("确定", null)                .show();    }}

附:代码资源下载地址:
http://download.csdn.net/download/qq_32376365/9942966

}

更多相关文章

  1. [置顶] 100多个Android(安卓)Demo的整合
  2. android屏幕页面实现滚动,页面跳转
  3. Android(安卓)仿微信朋友圈发动态功能(相册图片多选)
  4. android ANR 问题
  5. Gradle minifyEnabled 使用proguard混淆android代码 android stu
  6. 一行代码玩转android数据库之增删改查,超级简单 第三方框架xUtils
  7. Android之网络访问(一)android 中对apache httpclient及httpurlc
  8. Android中application 全局变量
  9. [置顶] android学习系列-短信发送器与电话拨号器调用(3)

随机推荐

  1. android ffmpeg视频硬解码例子
  2. 四个方向上的SlidingDrawer
  3. android读取图片
  4. Android开发之LisitView的图文并排效果实
  5. Android: Failure [INSTALL_FAILED_DEXOPT
  6. Android 使用Glide实现圆形和圆角图片
  7. 在一串字符中查找到手机号码,并打印出来
  8. 对 Android 开发者有益的 40 条优化建议
  9. android 关机流程详细分析
  10. Android 动态添加view或item并获取数据