STARTING問題在我的項目接口實現
我的接口的一般理解是好的,我讀過數百篇關於這個問題的例子,不同的文章,但我仍然在保持,因爲這一切閱讀仍然沒有給我一個答案,在我自己的項目中使用這個工具。
我會嘗試從我的項目中得到一個具體的例子,我可能會從使用Interfaces中受益,希望有人能夠給我一個關於如何實現它的具體答案。
我的這個項目的目的是繪製一個A4大小的圖像,並在PictureBox中進行預覽(調整大小),然後創建一個圖形用戶界面來在PictureBox中的圖像上創建和移動條形碼(帶有下面的標題文字) 。
現在我想能夠繪製具有相同功能的另一個文本對象來移動它並顯示在預覽中。但是這將是一個正常的文本,因此它會有不同的字體和標題。 這可以很容易地完成繪圖時的集合和循環。
但是如果我想向這個圖像添加更多的對象,如果我使用接口,維護和擴展會不會更容易? 我也想通過學習如何使用一些更復雜的東西來詳細說明我的編程。
當前進場至溶液
我的主要接口
public interface IElementCreator
{
int posX { get; set; }
int posY { get; set; }
StringFormat format { get; set; }
string value { get; set; }
Font font { get; set; }
bool caption { get; set; }
Font captionFont { get; set; }
}
我的用於創建元件
public class ElementBase : IElementCreator, IImageUpdater
{
#region IElementCreator Variables
private int _posX;
private int _posY;
private StringFormat _format;
private string _value;
private Font _font;
private bool _caption;
private Font _captionFont;
#endregion
#region IElementCreator Members
public int posX
{
get { return _posX; }
set { _posX = value; }
}
public int posY
{
get { return _posY; }
set { _posY = value; }
}
public StringFormat format
{
get { return _format; }
set { _format = value; }
}
public string value
{
get { return _value; }
set { _value = value; }
}
public Font font
{
get { return _font; }
set { _font = value; }
}
public bool caption
{
get { return _caption; }
set { _caption = value; }
}
public Font captionFont
{
get { return _captionFont; }
set { _captionFont = value; }
}
#endregion
#region Constructor
public ElementBase(int posX, int posY, StringFormat format, string value, Font font, bool caption, Font captionFont)
{
this.posX = posX;
this.posY = posY;
this.format = format;
this.value = value;
this.font = font;
this.caption = caption;
this.captionFont = captionFont;
}
#endregion
public Image updatePreview(IElementCreator element, Image img)
{
}
}
接口來更新預覽圖像
public interface IImageUpdater
{
Image updatePreview(IElementCreator element, Image img);
}
主類
我還沒有能夠測試這個,我已經做了代碼,我會在稍後開始測試。
我想要實現的是有一個接口來處理基本文本元素的創建。有了這個,應該可以用新類來處理具有不同設置的文本元素。
這只是一個起點,我知道一些代碼缺少一切可以使用的東西,但我只是想分享並確保我不完全跟蹤。
是的,我看到你的想法。但是我的想法仍然只有一個圖像要在預覽中顯示,然後創建所有這些不同的對象,使用不同的設置,並在圖像上將它們一起繪製在最後。我現在非常困惑,我不知道我是否完全偏離了這裏:-) – 2012-02-08 14:41:53
這並不意味着有多少圖像,而是關於實現的全部內容。如果你想要實現更多的圖像創作者,那麼界面將是最好的選擇。否則,你可能不需要它。另一方面,如果你打算進行單元測試,那麼界面將非常有用(甚至會說需要) – 2012-02-08 14:45:37
嗯,它首先意味着一種測試工具。我需要能夠移動頁面上的所有對象和一個按鈕,以使用所有對象的新設置來更新預覽圖像。如果這就是你的單元測試的意思。我的界面問題是我理解你的文章和你的代碼,但我想我需要一個具體的例子來說明界面應該是什麼樣子以及如何實現不同的類。但是,當然,你會得到一個up :) – 2012-02-08 15:00:02