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 反射机制 ...
随机推荐
- body-parser Node.js(Express) HTTP请求体解析中间件
body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日 781 声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...
- Scala集合笔记
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更 ...
- JNI和NDK
作者:十岁的小男孩 QQ:929994365 心之安处即是吾乡 前言 本文试图通过解答以下三个问题来达到学习JNI和NDK的目的.是什么?有什么用?怎么用?文章内容前三节来自下面第一个链接的博主共享, ...
- PHP抽象类
<?php /* * abstract * 抽象类: * 1.至少有一个抽象方法(没有具体实现的方法) * 2.不能被实例化,可以被继承 * 3.抽象类可以有子抽象类 * 相对于接口: * 1. ...
- BOM下的属性和方法---上
-------------BOM------------------------------------------------ 三个系统对话框 浏览器可以通过alert().confirm()和 ...
- Web开发.net framework 类库中必须掌握的命名空间(或者类)【转】
Web开发常用命名空间和类. System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...
- 2017-2018-2 20155309南皓芯 Exp6 信息搜集与漏洞扫描
实践内容 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 3.基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 4.漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞 基 ...
- sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询
曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...
- nexus私服常用设置
https://www.jianshu.com/p/7a09915675d9 或许用得上. settings.xml <server> <!-- 服务器密码 --> <i ...
- 【深入spring】IoC容器的实现
本文乃学习整理参考而来 IoC概述: 在spring中,IoC容器实现了依赖控制反转,它可以再对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入方法调用的依赖 ...