介面比較像我們常說的「原則」,它只給你一個骨架、一個大方向、一個目標、一個指示。它比較像老闆,站在台上喊衝、衝、衝,但下面怎麼業務怎麼達成業績就憑本事。一樣的口號、方針、目標,有人可以賺到年薪千萬、百萬,也有人只有數萬。
從程式面來看,先定義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時,我就能立即知道這台是個人電腦還是伺服器。
最前面有提到,介面就代表著一種合約,合約不可能是事後才來訂,都是事先規劃好,而且是大方向的規劃。舉例來說,一份網站開發的合約,只會談大方向、主功能、次功能、進度的獎懲、驗收標準,頂多再限定平台及開發語言等。不太可能把程式怎麼寫,變數怎麼定…等實作細節全部寫進去「合約」。我們只要照合約來走,實作出你所需要的網站即可。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。