作者l8PeakNeymar (十八尖山内马尔)
看板C_Sharp
标题[问题] Interface整合
时间Sun Dec 10 02:06:54 2017
想请问说
我要整合两种厂商的相机 A跟B
在UI可以做切换 一次只能选一种用
A的方法是包在一个class 可以编辑
B的方法是包在dll里面的inteface 无法编辑
目前想法是创一个空的interface 然後皆继承於他
A_class : I_ccd
B_interface : I_ccd -->当然因为无法编辑所以无法在後面加": I_ccd"
然後定义物件的格式
private I_ccd obj_ccd;
然後视使用者勾选哪一个来决定实体成A还是B
if(flag)
this.obj_ccd = new A_class();
else
this.obj_ccd = B_Vander.GetInstance();
在使用时就是
public void TakePicture()
{
if (obj_ccd is A_class)
obj_ccd.Focus();
obj_ccd.Snap();
else
obj_ccd.Grab();
}
一来是卡在一开始dll无法编辑的问题
二来好像不是很好的写法...
请问有什麽方法可以修改或是有更好的写法?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.146.2
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1512842816.A.724.html
※ 编辑: l8PeakNeymar (220.134.146.2), 12/10/2017 02:09:24
1F:→ t64141: 建立一个类别C,内含AB两家,在C中决定要使用哪一家 12/10 02:15
2F:→ t64141: 也就是不要去想改厂商提供的程式,而是让你的类别依照使 12/10 02:18
3F:→ t64141: 用者的选择而去操作不同厂商的相机这样如何? 12/10 02:18
4F:推 YahooTaiwan: 建两种相机的 Adapter,再用一个工厂,根据使用者的 12/10 08:07
5F:→ YahooTaiwan: 选择决定要生产哪种 Adapter 12/10 08:07
6F:推 vi000246: 建一个interface 里面有方法GetPic() 建类别A跟B 12/10 15:50
7F:→ vi000246: 皆实作GetPic()方法 B的实作就是呼叫dll的方法 12/10 15:50