仔细思考一个接口的不同实现得到的类和一个类的不同对象使用起来到底有什么区别?

最近在学习命令模式。

例子中是定义一个Command接口,其中只有一个execute方法声明。

接口的实现

因为接口是不指定构造方法的参数,也不指定成员变量的。所以你可以用任何形式实例化这个接口,只要其中实现了这个接口方法。

比如说开灯命令里面的execute中只要把light.on()方法写进去就可以了。而如果是播放cd命令的execute中就要写打开cd,放入碟片,调节音量等一系列操作。

二者却是联系的

这种执行逻辑的拓展是无法用同一个类的不同的对象实现的。当然,除非不同的对象中传入了不同的包含有execute方法的实现的对象,就如同OnClickListener。那就跟实现这个类一样了,不过是换了一个类,终究还是在不同的实现中完成的。

而同一个对象的不同的实例,不能改变自身的的方法的逻辑的具体实现。但是却可以接受不同的实现的对象来实现不同的逻辑。比如所不同的Button类的不同对象,setOnClickListener传入不同的OnClickListener,那么他们是同一个类的不同的实现。但是他们执行的onClick方法的逻辑却不相同。因为他们的这部分逻辑是调用的OnClickListener中的onClick方法的实现。


哲学一般的总结

同一个类的不同对象其终究意义在于其各个属性不同。而一个方法的执行的不同也是最终指向了不同的属性结果,只不过这种属性基于了调用的可能,基于了给想要改变的时候和改变者改变的时候,再进行改变。如果一个变化在时间上需要积分才能得出的结果。

那么站在时间的终端来看,不同的方法和不同的简单属性都是属性的不同。不同的OnClickListener有不同的onClick方法的实现,就相当于有不同的属性。不同的Button持有不同的OnClickListener,也就是持有不同的属性,从而导致持有不同的方法实现,这些方法的实现,在时间的终端仍然是属性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马工匠坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值