设计模式之模板设计模式
来源:互联网 发布: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.开发中只要继承对应的基类即可
阅读全文
0 0
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之 - 模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- 设计模式之模板模式
- git 使用规范
- java操作sqoop
- set基本用法,set接口存储一组唯一,无序的对象。数据存放无序,非常简单,主要呈现信息列表。
- Chrome 60 查看SSL证书信息, 居然有这样的操作?!
- POJ
- 设计模式之模板设计模式
- 如何获取行政区域的边界gps数据
- Java线程-10:线程的调度-合并
- Android 网络操作基础知识
- winedt 10 注册
- 微信支付应用签名修改后多久可以生效?
- Java 集合List删除元素
- 枚举理解
- 输入输出,数据类型,python编码问题