您的位置:首页 > 其它

关于接口、变量、指针、函数名和引用之间的联系

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语句、循环体构成(当然,这些这些功能也是由更底层的功能实现,我们就此打住)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: