App架构师实践指南一之App基础语法
第二章:App基础语法
1、编程范式
编程范型或编程范式(programming paradigm),是指从事软件工程的一类典型的编程风格。常见的编程范式有过程化(命令行)编程、事件驱动编程、面向对象编程以及函数编程等。
2、封装、继承与多态
OO(面向对象)思想中有三大支柱,分别为封装、继承、多态。
封装是OO概念中最基础的,其本质可以理解成将一堆函数和一堆对象放在一起,对外暴漏接口,隐藏具体执行细节。
继承是OO中一个重要概念,如果处理不好,就容易导致高耦合,使用时应注意:
-父类和子类职责明确,各司其职,互不干扰。
-父类的所有变化都要体现到子类;父类为子类提供服务,但不应该涉及子类具体业务。
多态一般要结合继承一起使用,本质上子类通过覆盖或重载父类的方法,来使得对同一类对象同一方法对调用产生不同对结果。
3、内部类的使用和思考
使用内部类最大的优点就在于,它能够非常好地解决多重继承的问题。
内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类/嵌套内部类。
-成员内部类。成员内部类是最普通的内部类,它位于另一个类内部。
-局部内部类。指定义指一个方法或者一个作用域内的类,访问权限仅限于方法内或者该作用域内。
-匿名内部类。匿名内部类指没有名字、没有构造方法的局部内部类。
-静态内部类/嵌套内部类。static关键字修饰的是不需要依赖于外部类的内部类。
4、实际使用中需要注意的问题
-成员内部类可以无条件地访问外部类的所有成员属性和方法(包括private和static成员);当与外部类拥有相同名称的方法或变量时,默认访问的是成员内部类成员或变量,若要访问外部类成员或变量,需要用new classNae.成员()/变量名的方法,如果是静态成员/变量,可以直接用className.成员()/变量名()访问
-成员内部类依赖于外部类,创建内部类对象时需先创建外部类,而静态内部类创建则不需要依赖于外部类。
-成员内部类中不能存在任何static的变量和方法,而静态内部类不能使用任何外部类的非static成员变量和方法
-建议中外部类中通过getXX()获取成员内部类,尤其是该内部类的构造函数无参数时
-使用匿名内部类时,必须也只能继承一个类或者实现一个接口;匿名内部类中不能定义构造函数,不能存在任何的静态成员变量和静态方法。
-匿名内部类的形参必须使用final修饰,避免引用值的变化
-使用匿名内部类时,一定要慎重对待内存泄漏(内部类保持类外部类的引用实例,内部类不销毁,外部类就无法被回收)。一般用静态内部类+弱引用方式或者动态代理方式替代。
5、线程与进程
一个进程可以包括多个线程,其内存空间时共享的,每个线程都可以使用这些共享内存,通过互斥锁(Mutex)来防止多个线程同时读写某一块内存区域,通过“信号量”(Sempahore)来保证多个线程不会相互冲突。多线程时一种利用CPU同时处理多个任务从而提高软件工作效率和资源利用率多方法,但是,当线程过多时,会消耗大量的CPU资源,且每开一条线程本身也是有开销的(如ios中,主线程占用1MB的内存空间,子线程占用512KB,可以使用-setStackSize设置,但必须是4KB的倍数,而且最小是16KB;线程的创建时间大概90ms)。多线程中,又会涉及线程池的管理,可以保证多线程使用中的服用、并发以及性能把控。
6、反射
反射(Reflection)是程序中运行状态中动态检测、访问或者修改类型的行为特征,具体表现为
-对于任意一个类,都能知道这个类的所有属性和方法
-对于任何一个对象,都能够调用它的任何一个方法和属性
7、注解
注解(Annotation),也叫元数据,是一种代码级别的说明,在java中,Annotation是JDK 1.5以后版本引入的一个特性,与类、接口、枚举属同一层次,可以声明在包、类、字段、方法、局部变量、方法参数等前面,用来对这些元素进行说明和注释。其本身只是一个标记,之所以产生作用,在于对其解析【java提供类一种源程序中的元素关联任何信息或者任何元数据的途径和方法】
8、泛型
泛型是java 1.5引入的特性,主要目的是为解决数据类型的安全性问题,具体包括泛型类、泛型接口及泛型方法。
App架构师实践指南一之App基础语法的更多相关文章
- App架构师实践指南二之App开发工具
App架构师实践指南二之App开发工具 1.Android Studio 2.编译调试---条件断点.右键单击断点,在弹出的窗口中输入Condition条件.---日志断点.右键单击断点,在弹 ...
- App架构师实践指南六之性能优化三
App架构师实践指南六之性能优化三 2018年08月02日 13:57:57 nicolelili1 阅读数:190 内存性能优化1.内存机制和原理 1.1 内存管理内存时一个基础又高深的话题,从 ...
- App架构师实践指南四之性能优化一
App架构师实践指南四之性能优化一 1.性能维度常见用来衡量App性能的维度如图9-1所示.其中,性能指标包括电池(电量/温度).流量(上行流量/下行流量等).CPU(平均/最大/最小).内存 ...
- App架构师实践指南五之性能优化二
App架构师实践指南五之性能优化二 2018年07月30日 13:08:44 nicolelili1 阅读数:214 从UI和CPU方面来说App流畅体验优化,核心为流畅度/卡顿性能优化. 1.基 ...
- App架构师实践指南三之基础组件
App架构师实践指南三之基础组件 1.基础组件库随着时间的增长,代码量的逐渐积累,新旧项目之间有太多可以服用的代码.下面是整理的公共代码库. 2.关于加密密钥的保护以及网络传输安全是移动应用安全最关键 ...
- 网易新闻App架构重构实践:DDD正走向流行
网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智 ...
- 【架构师之路】APP架构师必看:面对爆发流量如何进行架构调整
一.APP架构与WEB架构的最大不同 移动APP的架构和传统PC的WEB架构有三点不同: 1.连接的稳定性.在传统的web端连接成功后就可以认为它是稳定的,但在移动端.无线端,APP连接非常敏感,可能 ...
- 零基础到架构师 不花钱学JavaEE(基础篇)- 概述
Java简单来说是一门语言,Java能干什么? 网站:开发大,中,小型网站. 服务器端程序:企业级程序开发. APP:Android的APP基本使用Java开发. 云:Hadoop就是使用Java语言 ...
- 【大数据系统架构师】0.1 Java编程基础
1. 初识Java 2. Java语法 快速入门点我 2.1 数据类型和运算符 2.2 流程控制语句 2.3 数组 2.4 类和对象 2.5 OOP三大特性 2.6 集合框架与泛型 2.7 反射机制 ...
随机推荐
- CF1081A
CF1081A 题意: 从
- Reactor模型-多线程程版
1.概述 在Reactor单线程版本的设计中,I/O任务乃至业务逻辑都由Reactor线程来完成,这无疑增加了Reactor线程的负担,高负载情况下必然会出现性能瓶颈.此外,对于多处理器的服务器来说, ...
- MACE(3)-----工程化
作者:十岁的小男孩 QQ:929994365 能下者,上. 前言 本文是MACE的第三步即MACE环境编译出来的库在Android工程中的使用.在第一篇博文中通过mace官方提供的安卓工程进行调试,本 ...
- JAVA Random 随机类
nextInt 方法 得到一个随机整数, 可以指定范围 package object; import static net.util.Print.*; import java.util.Random; ...
- VIM 报错
syntax error: unexpected end of file if 没配对 在最后加 fi 试试 环境变量用不了 export PATH=/usr/bin:/usr/sbin:/bin:/ ...
- python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)
今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...
- ERP打印入库单(四十)
需求描述:此购进单的基本信息,购进单位,入库单位,入库时间……此购进单批号,产品名称,生产企业,等基本信息.实现能够循环加载打印.本单金额小计,整单金额合计计算.技术需求:界面设计,循环加载数据实现函 ...
- 【深度探索C++对象模型 | 02】构造函数语意学
默认构造函数的构造操作.拷贝构造函数额构造操作 注意:默认构造函数和拷贝构造函数在必要时的时候由编译器产生出来. 参考资料 关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数)
- Eclipse-debug时提示absent line number information的解决办法
unable to install breakpoint in ...(file name) due to miss line number attributes. midify compliter ...
- Codeforces Round #228 (Div. 1)
今天学长给我们挂了一套Div.1的题,难受,好难啊. Problem A: 题目大意:给你n个数字,让你叠成n堆,每个数字上面的数的个数不能超过这个数,如 3 上面最多放三个数字 问你,最少能放几堆. ...