android 快速开发(一)抽象类的使用:使业务逻辑更清晰

2024-08-21 02:38

本文主要是介绍android 快速开发(一)抽象类的使用:使业务逻辑更清晰,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

抽象类的使用:使业务逻辑更清晰

一、abstract修饰符

        abstract 修饰符 可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员,抽象方法是没有方法体的方法。
        abstract 不可以和static、virtual、final、native一起使用
        声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(抽象方法),那么这个类就是一个抽象类,抽象类的对象就不能被实例化,通常用于强制继承类必须实现某一成员.抽象类是必须要派生子类的。并且,如果子类没有实现抽象基类的所有方法,则子类也成为一个抽象类。
        java中定义抽象类是出于相同考虑。抽象类是他的所有子类的公共属性的集合,所以抽象类的一大优点就是充分利用公共属性来提高开发和维护程序的效率。

二、abstract例子

public abstract class MyAbstractClass {
public void test1(){ // 一个正常的方法
}
public abstract void test2(){ // 一个抽象方法。
}
提示,如果JAVA类的任何一个方法是abstract的,则类本身必须是abstract的。

三、在Android的用法

抽象类和抽象方法的使用可以使业务逻辑更清晰,自然而然的提高开发和维护程序的效率

安卓主要有activity,fragment所以常用的抽象类针对这两个来做

下面写一个在安卓中用到的抽象类

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;public abstract class AbstractActivity extends FragmentActivity{/*** 这里添加所有公共的对象* 单例*/protected SPUtil sp;@Overrideprotected void onCreate(Bundle arg0) {super.onCreate(arg0);init();addLisener();initSingleton();initData();}/*** 所有初始化在此方法完成*/public abstract void init(); /*** 添加监听事件*/public abstract void addLisener();/*** 初始化数据*/public abstract void initData();/*** 初始化所有单例对象*/private void initSingleton() {sp = SPUtil.getInstance();}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}}

在上面的例子中,我们可以看到class前面加了一个abstract修饰符,因为类包含了三个带有abstract修饰符的方法

分别是:init()  、  addLisener()  、  initData()

他们的作用在上面注释  很清楚  

还发现  7个生命周期都包括在里面,目的是什么呢:

每个类继承这个抽象类,重写抽象的方法,使安卓本身的代码与我们需要做的逻辑分离,并且在我们开发的过程中,都需要对某个特定生命周期做一些通用的操作

这样可以省下许多代码量,如果还要在主动继承的类中操作,只需要重写这个方法就可以

下面我们来看下,主动继承的类的编码:
package com.yqy.yqy_abstract.activity;import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;import com.yqy.yqy_abstract.R;
import com.yqy.yqy_abstract.utils.L;
import com.yqy.yqy_abstract.utils.TextUtils;public class MainActivity extends AbstractActivity {private TextView tv_show;@Overridepublic void init() {setContentView(R.layout.activity_main);tv_show = (TextView) findViewById(R.id.tv_show);}@Overridepublic void addLisener() {tv_show.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {L.e("YQY", "tv_show>>onclick...");sp.write("tv_show", "点我了!");}});}@Overridepublic void initData() {tv_show.setText(sp.read("tv_show", "没点过我"));}@Overrideprotected void onStart() {super.onStart();if(TextUtils.isEmpty(sp.read("tv_show", ""))){sp.write("tv_show", "没点过我...");};}}


我们可以发现,看起来很有逻辑性,分工明确

我们可以根据我们的业务逻辑来写不同的抽象类,基类等等,但是最终的父类也就像上面的写法


接下来会写一篇上面设计到的简单的辅助类:SPUtil、  L、T 等。。。


第一次写这类文章,希望大家指正,笔者也怕误人子弟呀~~~~





这篇关于android 快速开发(一)抽象类的使用:使业务逻辑更清晰的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1091890

相关文章

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处