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 反射机制 ...
随机推荐
- js实现页面重定向
在现行的网站应用中URL重定向的应用有很多: 404页面处理.网址改变(t.sina转到weibo.com).多个网站地址(如:http://www.google.com/ .www.g.cn )等: ...
- npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法
npm ERR! path E:\SouthernPowerGridProject\web_project\AutoOPS\autoops\node_modules\fsevents\node_mod ...
- Java_myeclipse添加DTD约束(框架xml只能提示功能)
以struts2中的xml为例 struts-2.3.4-all\struts-2.3.4\src\core\src\main\resources
- 用Delphi从内存流中判断图片格式
https://blog.csdn.net/my98800/article/details/53536774 废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件 ...
- BZOJ1258 [CQOI2007]三角形tri 模拟
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1258 题意概括 这种图中,一个三角形的三边如果被其他某一个三角形的一条边包括,那么我们说该三角形和 ...
- java语言打印上三角和下三角,进一步得到九九乘法表
关于下面两种图形的打印问题 ***** 与 * **** ** *** *** ** **** * ***** 一:程序 1.先打印下三角 2.结果 3.后打印上三角 4.结果 二:知识点 1.f ...
- Linux学习之常用网络通信命令与shell简单应用技巧(四)
(一)常用网络通信命令 (1)ping命令 (2)write命令 (3)wall命令 (4)ifconfig命令 (5)shutdown命令 (6)reboot命令 (二)shell简单应用技巧 (1 ...
- iOS企业版应用发布(部分低版本系统)无法安装到最新版app的问题-缓存导致
通过自己网站发布企业版app时,经过测试发现在部分已安装过旧版app的低版本ios手机存在这样的问题 :扫码覆盖安装新版app,安装到的仍然是就版本的app.这样就导致部分用户一直无法更新到最新版本. ...
- 进程间通信(IPC)
1.什么是进程间通信 通俗来讲,进程间通信就是:多个进程之间的数据交互 进程都有自己独立的虚拟地址空间,导致进程之间的数据交互变得十分困难,通信复杂了,但是安全性提高了: 进程间通信的本质:多个进程之 ...
- SQLite中的运算符表达式
SQLite中的运算符表达式 在SQLite中,运算符包括了一元运算符,二元运算符(二进制运算符)和三元元素符.图3.12中给出了这些运算符需要的参数以及优先级.其中,一元运算符的优先级最高,三元运算 ...