设计模式之模板设计模式

来源:互联网 发布:md204lv4编程软件下载 编辑:程序博客网 时间:2024/05/27 20:08

         什么叫模板设计模式呢?个人理解就是在基类里面定义操作中算法的骨架,具体的实现交由子类。为什么要用它呢?自然是能提高开发效率嘛:一方面可以复用代码;另一方面还可以提高代码可读性。开发中最常用的就是设计一个BaseActivity和BaseFragment作为开发模板了。下面就来定义一个这样的模板.

1.定义BaseActivity类:

public abstract class BaseActivity extends AppCompatActivity {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initBeforeView();        setContentView(getContentViewId());        ButterKnife.bind(this);        initTitle();        initView();        initData();    }    /**     *加载布局之前要做的初始化     */    protected void initBeforeView() {    }    /**     * 初始化头部     */    protected abstract void initTitle();    /**     * 初始化界面     */    protected abstract void initView();    /**     * 初始化数据     */    protected abstract void initData();    /**     * 返回当前activity所显示布局id     * @return     */    protected abstract int getContentViewId();    /**     *查找页面布局ID所对应控件对像,不用强制转换     * @param resId     * @param <T>     * @return     */    protected <T>T findViewByIds(int resId){        return (T)findViewById(resId);    }    /**     * 跳转activity     * @param cls     */    protected void startActivity(Class<?> cls){        startActivity(new Intent(this,cls));    }}
        2.定义BaseFragment类:

public abstract class BaseFragment extends Fragment {    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initBeforView();    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {        View view=inflater.inflate(getContentView(),container,false);        ButterKnife.bind(this,view);        return view;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        initView(view);        initData();    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        getBundle(getArguments());    }    /**     * view创建之前要做的初始化     */    protected void initBeforView() {    }    /**     * 返回当前fragment的布id     * @return     */    protected abstract int getContentView();    /**     * 初始化界面     * @param view     */    protected abstract void initView(View view);    /**     * 初始化数据     */    protected abstract void initData();    /**     * 获取activity传过来的数据     * @param arguments     */    protected void getBundle(Bundle arguments) {    }    /**     * 启动activity     * @param cls     */    protected void startActivity(Class<?> cls){        startActivity(new Intent(getContext(),cls));    }}

       3.开发中只要继承对应的基类即可

原创粉丝点击