C#进阶之面向接口编程

在阅读本文之前,您需要对面向对象思想以及接口有一个较为清楚的认识!

Tips:

此篇文章着重讲述面向接口编程的代码搭建方式,至于原理以及一些基础知识可以参照这篇文章:面向接口编程思想基础

那么,让我们开始吧~

假设您准备研发一个moba类游戏(类似英雄联盟或者王者荣耀)。每个人物都必须包含两个字段:名字和人物类型,两个方法:介绍自己的性格和释放技能。

为了体现面向对象思想,我们需要做的第一步应该是为每个人物都设计一个独立的类,代码如下:

游戏人物之锤石


游戏人物之德莱文

有了这两个类我们就可以叫人物模拟一些场景啦,比如叫他们自我介绍.

于是你可能会写出以下代码和运行结果:


嗯。。。看起来似乎没什么问题。


但如果我先有了第三个人物,那该怎么办呢?

除了重新写个人物类以外,还得在main方法里面重新实例化以及调用一次。

但是LOL可以是一百多个英雄!如果全部都要做自我介绍的话岂不是得在main方法里面实例化以及调用一百次?


于是我们可以开始考虑使用接口了。

至于好处我先不说,先看代码。

因为每个英雄都包含了固有的两个字段和两个方法,所以我们可以写个接口来限定它。



然后我们的每个英雄类都去继承这个接口



核心代码警告

再来个自我介绍的方法:


于是乎,我们的main方法就被简化成了这样:



两种方式的差异就显而易见了吧。

在使用了面向接口的编程方式后,我们如果要新增一个任务,就只需要写个人物的类来继承我们的IHeros接口,然后在Main里面调用一下。不管以后需要新增多少个人物,都是一样的简单。

但是使用第一种方式的话,我们就需要在Main写非常多的冗余代码。

而且万一以后我们需要给英雄们新增加一个方法(比如跳一段舞)的话,我们就需要手动去修改所有的英雄类,英雄类多了之后难免会漏掉那么百分之一二,更恐怖的是我们需要挨个修改main方法里面的逻辑。

而面向接口的编程方式很好地解决了这个问题。

如果我们现在又一百个英雄都需要新增跳舞的方法。我只需要在IHeros接口里新增一个跳舞的方法:


然后我所有的英雄类都会报这个错误:


这样可以完美地防止在修改英雄类的时候会漏掉。


而且我只需要修改一下ShowMyself里面的ShowHero()方法就完事儿。甚至都不需要修改Main方法!

你可能感兴趣的:(C#进阶之面向接口编程)