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

本文探讨了接口、变量、指针、函数名和引用等概念如何提高软件设计的灵活性与维护性。通过实例说明这些概念如何简化代码管理和更新过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于接口、变量、指针、函数名和引用之间的联系,并以此引申出来的软件层次

本文原创:由[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代表一个复杂的功能或者代表某个类型集合),可以增加软件的灵活性、减少重复性(比如:一个函数名的背后是一堆复杂的代码,我们调研函数名就是调用一堆复杂的代码)。

由此引申而来的软件层次

假设我们现在要开发一个软件,该软件包含三个功能:

  *functionA:[代指某种功能A,而该功能A本质上其他子功能的集合]
  *functionB:[代指某种功能B,而该功能B本质上其他子功能的集合]
  *functionC:[代指某种功能C,而该功能C本质上其他子功能的集合]

同样,functionA是由下面一些子功能实现的:

functionA=
{subfunctionA1 , subfunctionA2 , subfunctionA3 , subfunctionA4.....}

【注意:每个子功能其实都是一堆复杂的代码实现的,我们现在仅用一个subfunction代指,其实每一个subfunction可以认为是一个方法或者函数名】
以此类推,子功能又由子子功能组成,而最终,这些功能是由统统是由变量、ifelse语句、循环体构成(当然,这些这些功能也是由更底层的功能实现,我们就此打住)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值