發布時間:2012/10/25 來源:長沙做網站
軟件設計模式成為做網站行業中對于商端產品必選的設計模式。asp.net成為目前做網站行業里選擇最多最安全的開發語言。但是對于低級開發者而言,并沒有研究好asp.net所涉及到的軟件設計模式,只是簡單的利用asp.net開發工具.net中所提供的控件進行簡單的網站開發。為了讓做網站中的業內人士多了解軟件設計模式和asp.net所提供的更深層次的安全開發模式,長沙做網站先行者對同行提供一些軟件設計模式所需要的知識。
在軟件設計模式中,類與結構、抽象類與接口這些是必須會涉及到的,但是開發者常常對這些概念并沒有了解深刻,此次長沙做網站技術人員詳細說明接口、類、抽象類、結構四者之間的區別。
類與結構的區別:
關于類的示例代碼:
public class ClassTest
{
int length;
int height;
public void Area()
{
}
}
關于結構的示例代碼
public struct ClassTest
{
int length;
int height;
public void Area()
{
}
}
從上面的示例代碼中可以看出,類和結構的聲明非常相似,只是一個修飾符的不同,類的修飾符是class,而結構的修飾符是struct。既然定義類和結構從聲明上相似,那么其具體的區別是什么呢?那又為什么要用這兩種方式呢?
結構是值類型,值類型在堆棧上分配地址;類是引用類型,引用類型在堆上分配地址。堆棧的執行效率要比在堆上的執行效率要高,但是堆棧的資源有限,對于邏輯性比較復雜的對象就不太適合了。
結構不能繼承;類可以繼承。
在內部結構上,結構不能有protected修飾符,不能使用new,由于不能繼續所以不能有abstract和seated。
類和結構的使用:
堆棧的空間有限,對于大量的邏輯的對象,創建類要比創建結構好一些。
結構表示如點、矩形和顏色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則將為引用每個對象分配附加的內存。在此情況下,結構的成本較低。
在表現抽象和多級別的對象層次時,類是最好的選擇。
大多數情況下該類型只是一些數據時,結構時最佳的選擇。
抽象類與接口的區別。
抽象類示例代碼:
abstract class Area
{
abstract void AreaMethod();
}
接口的示例代碼:
interface Area
{
void AreaMethod();
}
從聲明上來看抽象類與接口的區別也是在修飾符上。具體的區別要在實際應用長期實戰中才能理清思路。但是對于他們的使用可以參考以下幾點:
1.如果預計要創建組件的多個版本,則創建抽象類。抽象類提供簡單的方法來控制組件版本。
2.如果創建的功能將在大范圍的全異對象間使用,則使用接口。如果要設計小而簡練的功能塊,則使用接口。
3.如果要設計大的功能單元,則使用抽象類.如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類。
4.抽象類主要用于關系密切的對象;而接口適合為不相關的類提供通用功能。
有一個比喻來形容接口與抽象類:飛機與鳥都會飛因為它們繼承了一個接口“飛”,但是戰斗機屬于飛機抽象類,貓頭鷹屬于鳥的抽頭類。