请问一个接口设计、使用的有关问题,高手
请教一个接口设计、使用的问题,在线等高手!

这是为了描述各种硬件设备而设计的,应用的时候有点问题。
接口:A类设备 d1 = new 类:1号设备
接口:A类设备 d2 = new 类:2号设备
可是无法直接调用接口:串口或者接口:网口中的方法
暂时有一个变通的办法就是
(d1 as 接口:串口).Port = 10;
(d2 as 接口:网口).Port = 10;
(d2 as 接口:网口).IP ="192.168.0.2";
在这里我想请教两个问题
1、我这样设计接口合理吗?
2、我这样使用接口合理吗?
------解决思路----------------------
只是感觉第二层接口可能有些多余,接口有差别,可以分成多个接口,一个类可以继承多接口的
------解决思路----------------------
或者
滥用抽象是不对的。既然你的d1被当作串口用,你的被当作网口用,就不应该再空洞地使用什么更抽象的概念,而应该具体化。
------解决思路----------------------
晕死,用上继承不好吗
什么都用接口吗
这不是典型的为了接口而接口了吗
------解决思路----------------------

楼主你的意是 一种设备可以有多种接口吧,好比一台电视机的输入口有PIN口,HTMI口,这两个口都是为电视输入数据源?
------解决思路----------------------
当你实例化对象时,将引用变量d1、d2声明为抽象的接口,就是一种多余的做法。
如果我们声明为
然后把d1传给一个针对串口的处理方法,例如
这才是多态的概念。
也就是说,把d1声明为什么“接口”其实根本是多余的,纯粹是滥用“多态”这个概念。
------解决思路----------------------
应该可以的,使用的时候判断一下是否为某接口:
if(d1 is 串口) (d1 as 串口).xxx = yyy;
------解决思路----------------------
那好办呀,只要两个接口就可以了,不要写那么多一层一层的。就定义
网口电视接口
串口电视接口
然后你的电视
长虹电视(两种接口都有):网口电视接口,串口电视接口// 在这里实现两种接口
{
}
长虹网口电视:网口电视接口
{
}
没必要套那么多层太多层你自己也麻烦。
------解决思路----------------------
滥用接口,其实就是“反过来”使用多态。也就是在不需要声明更加抽象类型的变量时去声明,这是不应该的。
当你写一个针对“A类设备”的方法时,你明知道接下来的处理是需要确保是“A类设备”才有的操作,你就不应该把对象引用变量声明“串口”。也就是说,写程序应该尽量具体化才是好的。这是最起码的道理,规矩。
真正会使用抽象的人也不是滥用抽象的。
这是为了描述各种硬件设备而设计的,应用的时候有点问题。
接口:A类设备 d1 = new 类:1号设备
接口:A类设备 d2 = new 类:2号设备
可是无法直接调用接口:串口或者接口:网口中的方法
暂时有一个变通的办法就是
(d1 as 接口:串口).Port = 10;
(d2 as 接口:网口).Port = 10;
(d2 as 接口:网口).IP ="192.168.0.2";
在这里我想请教两个问题
1、我这样设计接口合理吗?
2、我这样使用接口合理吗?
------解决思路----------------------
只是感觉第二层接口可能有些多余,接口有差别,可以分成多个接口,一个类可以继承多接口的
------解决思路----------------------
类:1号设备 d1 = new 类:1号设备
类:2号设备 d2 = new 类:2号设备
或者
接口:串口 d1 = new 类:1号设备
接口:网口 d2 = new 类:2号设备
滥用抽象是不对的。既然你的d1被当作串口用,你的被当作网口用,就不应该再空洞地使用什么更抽象的概念,而应该具体化。
------解决思路----------------------
晕死,用上继承不好吗
什么都用接口吗
这不是典型的为了接口而接口了吗
------解决思路----------------------
楼主你的意是 一种设备可以有多种接口吧,好比一台电视机的输入口有PIN口,HTMI口,这两个口都是为电视输入数据源?
------解决思路----------------------
当你实例化对象时,将引用变量d1、d2声明为抽象的接口,就是一种多余的做法。
如果我们声明为
类:1号设备 d1 = new 类:1号设备
类:2号设备 d2 = new 类:2号设备
ABCD.测试最合适的波特率参数(d1)
然后把d1传给一个针对串口的处理方法,例如
class ABCD
{
public static void 测试最合适的波特率参数(I串口 x)
{
........
这才是多态的概念。
也就是说,把d1声明为什么“接口”其实根本是多余的,纯粹是滥用“多态”这个概念。
------解决思路----------------------
应该可以的,使用的时候判断一下是否为某接口:
if(d1 is 串口) (d1 as 串口).xxx = yyy;
------解决思路----------------------
楼主你的意是 一种设备可以有多种接口吧,好比一台电视机的输入口有PIN口,HTMI口,这两个口都是为电视输入数据源?
是的,就是这个意思。
那好办呀,只要两个接口就可以了,不要写那么多一层一层的。就定义
网口电视接口
串口电视接口
然后你的电视
长虹电视(两种接口都有):网口电视接口,串口电视接口// 在这里实现两种接口
{
}
长虹网口电视:网口电视接口
{
}
没必要套那么多层太多层你自己也麻烦。
------解决思路----------------------
滥用接口,其实就是“反过来”使用多态。也就是在不需要声明更加抽象类型的变量时去声明,这是不应该的。
当你写一个针对“A类设备”的方法时,你明知道接下来的处理是需要确保是“A类设备”才有的操作,你就不应该把对象引用变量声明“串口”。也就是说,写程序应该尽量具体化才是好的。这是最起码的道理,规矩。
真正会使用抽象的人也不是滥用抽象的。