我设想的接口
现在c#的接口只是一个签名,也就是签名一样就可以用不同的实现。
但是我认为这个接口模式还不是理想的模式,我认为接口应该是一个规则,而不只是一个签名。也就是要满足特定规则的实现,才是符合该接口的。
规则包括对数据的定义,输入输出的关系等。从实现角度,就是接口签名外,增加代码测试功能。也就是,任何一个实现,都应该符合接口的签名(语法),同时通过它的测试(语意)。
为何我有这个想法,因为大多数情况下,单单签名相同就认为是一个实现,这种约束太低了,反而实用价值不大。
比如一个功能组件,建立的目的不是为了满足某一个功能吗?但是你其中一个实现却只是实现了一个接口签名,虽然能够套上去,但是组合起来完全不是你想要的功能,甚至让你的数据流变得乱七八糟,毫无意义。
比如是一个增幅器组件,把进入的int流增大,出来也是int流,光服从签名你可以进去的是大的数,出来是小的数,但是不符合你的语意,你的目的是增大,而不是减小。因此只有增加测试后的、添加语意限制后的接口的实现,才是满足你工作需求的。对进出的数进行扩大性判断,不符合语意就报错。
我认为这种接口,比单纯的签名式接口,更加有实用价值。