关于接口、变量、指针、函数名和引用之间的联系
2016-06-14 13:08
288 查看
关于接口、变量、指针、函数名和引用之间的联系,并以此引申出来的软件层次
本文原创:由[cos0sin0]编写:接口
函数名
变量
指针
引用
关于接口、变量、指针、函数名和引用的感悟
从某一个层面来说,接口、指针、引用、变量他们都是在做同一件事情,拓展软件的灵活性。它们抽象的代表了一种功能或者一种类型!举个例子:A.变量
//a代表了整形变量这一类型 int a;
B.常量
//str代表了一个常量字符串 public static final String str = "我是常量"; /** *试想一下,我们在一个项目中要多次用到该常量,如果我们不用str来代替常量, *我们就要在项目中一次又一次的输入“我是常量”这个字符串。更为糟糕的是,某 *一天需求变量,项目要求将“我是常量”修改成“我是变量”,这样,我们就要在项目 *中将原来的字符串一个个重复性的替换。而如果用str来代替常量字符串,我只需要 *修改一次就好,即在定义该常量的地方修改就可以了。 **/
C.函数名
//function为方法名,代指某个功能。它指向了实现该功能的代码 //可以把function想象成变量,代码就是变量指向的数据 //函数名可以理解为静态的,我们很少修改函数名。 //函数名指向的代码是动态的,我们经常修改函数内的代码,修复bug public void function(){ //code }
D.接口
/**接口定义了一系列抽象的方法,就是定义了某种功能。具体的实现可以是code1 *来实现,也可以是通过code2来实现,当然也可以通过code3来实现。大大的增加 *了软件的灵活性。 *本质上,接口和变量名没什么区别。 **/ public interface services{ public void method1(); public void method2(); //........ }
感悟和建议
个人认为,我们现实中的货币其实和指针引用接口是同一个概念。在古代,没有货币,人们只能通过交易牛来获取马,通过食品来换取衣物,而使用牛换取衣物就会显得不合理不划算,在实际的交换中,这种方式也会显得非常麻烦,十分的不方便、不灵活。而有了货币,一切就不一样了,将牛换成货币,通过这些货币可以买到衣物、买到日用品。比如,1000元==手机,也可以1000元==演唱票,仅仅引入一个中间量,整个交易瞬间就盘活了,同理,软件的动态性正是通过这些指针、引用和接口实现的。引申一点,出现了货币之后,就要统一货币,不能北方使用货币A,而南方使用货币B,西方使用货币C,东方使用货币D。这就会增加不必要的麻烦,所以最终,人民币成了中国唯一的货币。就像在HTTP协议中,固定好了GET、POST这些方法,让大家共同遵守,这个互联网才能互联。因此,在设计软件的过程中,一定要注意哪些是要经常变动的,而哪些是固定不变的。
使用上述的方式,通过X来代替Y(Y代表一个复杂的功能或者代表某个类型集合),可以增加软件的灵活性、减少重复性(比如:一个函数名的背后是一堆复杂的代码,我们调研函数名就是调用一堆复杂的代码)。
由此引申而来的软件层次
假设我们现在要开发一个软件,该软件包含三个功能:*fu 88b8 nctionA:[代指某种功能A,而该功能A本质上其他子功能的集合] *functionB:[代指某种功能B,而该功能B本质上其他子功能的集合] *functionC:[代指某种功能C,而该功能C本质上其他子功能的集合]
同样,functionA是由下面一些子功能实现的:
functionA= {subfunctionA1 , subfunctionA2 , subfunctionA3 , subfunctionA4.....}
【注意:每个子功能其实都是一堆复杂的代码实现的,我们现在仅用一个subfunction代指,其实每一个subfunction可以认为是一个方法或者函数名】
以此类推,子功能又由子子功能组成,而最终,这些功能是由统统是由变量、ifelse语句、循环体构成(当然,这些这些功能也是由更底层的功能实现,我们就此打住)。
相关文章推荐
- ruby 关于目录操作
- 剑指offer----青蛙跳台阶的解析与实现
- 科学计算:Python ----线性代数基础
- 传感器的分类
- 麒麟开源堡垒机功能版本说明及升级方式说明
- java异常体系
- linux命令(11)下查看和添加环境变量
- 麒麟开源堡垒机V1.31b发布,
- NEU710(wanghang走迷宫)
- hive 时间函数 总结
- CTF【每日一题20160613】
- [ios]scrollView实现移动与缩放
- 资源文件相关学习总结
- HTTP协议状态码详解(HTTP Status Code)
- 苹果最新审核标准:IPv6
- android常用颜色对照表
- springMVC中Validation介绍
- 第二、UIScrollView的使用大全
- 分布式任务调度平台XXL-JOB
- Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像