介面比較像我們常說的「原則」,它只給你一個骨架、一個大方向、一個目標、一個指示。它比較像老闆,站在台上喊衝、衝、衝,但下面怎麼業務怎麼達成業績就憑本事。一樣的口號、方針、目標,有人可以賺到年薪千萬、百萬,也有人只有數萬。
從程式面來看,先定義IAsset(資產)介面
Interface IAsset
' 完成變更事件
Event ComittedChange(ByVal Success As Boolean)
' 部門屬性
Property Division() As String
' 取得方法
Function GetID() As Integer
End Interface
然後我們透過類別來實作此介面,
Class PersonComputer
Implements IAsset
Public Event ComittedChange(ByVal Success As Boolean) _
Implements IAsset.ComittedChange
' 實作部門屬性
Private divisionValue As String
Public Property Division() As String Implements IAsset.Division
Get
Return divisionValue
End Get
Set(ByVal value As String)
divisionValue = value
' 當我修改部門,引發事件
RaiseEvent ComittedChange(True)
End Set
End Property
' 回傳資產ID
Private IDValue As Integer
Public Function GetID() As Integer Implements IAsset.GetID
Return IDValue & "PC"
End Function
' 建構式
Public Sub New(ByVal Division As String, ByVal ID As Integer)
Me.divisionValue = Division
Me.IDValue = ID
End Sub
End Class
Class ServerComputer
Implements IAsset
Public Event ComittedChange(ByVal Success As Boolean) _
Implements IAsset.ComittedChange
' 實作部門屬性
Private divisionValue As String
Public Property Division() As String Implements IAsset.Division
Get
Return divisionValue
End Get
Set(ByVal value As String)
divisionValue = value
' 當我修改部門,引發事件
RaiseEvent ComittedChange(True)
End Set
End Property
' 回傳資產ID
Private IDValue As Integer
Public Function GetID() As Integer Implements IAsset.GetID
Return IDValue & "Server"
End Function
' 建構式
Public Sub New(ByVal Division As String, ByVal ID As Integer)
Me.divisionValue = Division
Me.IDValue = ID
End Sub
End Class
透過資產這個介面,我們實作了兩個類別,個人電腦類別及伺服器類別。只要實作介面的類別,就必須照介面的原則走,該有的屬性、方法、事件,一個也不能少。但實作出來內容程式碼,就依各個類別的需求下去實作。例如,我們在回傳ID時,個人電腦將在ID後面加上PC,伺服器則加上Server,當我看到ID時,我就能立即知道這台是個人電腦還是伺服器。
最前面有提到,介面就代表著一種合約,合約不可能是事後才來訂,都是事先規劃好,而且是大方向的規劃。舉例來說,一份網站開發的合約,只會談大方向、主功能、次功能、進度的獎懲、驗收標準,頂多再限定平台及開發語言等。不太可能把程式怎麼寫,變數怎麼定…等實作細節全部寫進去「合約」。我們只要照合約來走,實作出你所需要的網站即可。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。