作者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://www.ptt.cc/bbs/C_Sharp/M.1512842816.A.724.html
※ 編輯: l8PeakNeymar (220.134.146.2), 12/10/2017 02:09:24
→ t64141: 建立一個類別C,內含AB兩家,在C中決定要使用哪一家 12/10 02:15
→ t64141: 也就是不要去想改廠商提供的程式,而是讓你的類別依照使 12/10 02:18
→ t64141: 用者的選擇而去操作不同廠商的相機這樣如何? 12/10 02:18
推 YahooTaiwan: 建兩種相機的 Adapter,再用一個工廠,根據使用者的 12/10 08:07
→ YahooTaiwan: 選擇決定要生產哪種 Adapter 12/10 08:07
推 vi000246: 建一個interface 裡面有方法GetPic() 建類別A跟B 12/10 15:50
→ vi000246: 皆實作GetPic()方法 B的實作就是呼叫dll的方法 12/10 15:50