返回列表 上一主題 發帖

VB.NET 介面(Interface)

VB.NET 介面(Interface)

介面(Interface)

Constract(合約)

定義Method規劃

*可擴充  Aggregation(聚合)

介面 1

'介面合約(功能-程序(method or porperty)合約  

2 Public Interface IWork  

3     '定應工作合約規範預設為抽象  

4     Sub working(ByVal thing As String)  

5 End Interface

介面 2



view sourceprint?1 Public Interface ISales  

2     '業務推廣  

3     Sub Promotion()  

4   

5 End Interface

實作介面類別1 : 實作 介面1



view sourceprint?1 '實作介面  

2 Public Class Employee  

3     Implements IWork  

4     '工作能力  

5     Public Sub working(ByVal thing As String) Implements IWork.working  

6         System.Console.WriteLine(String.Format("做...{0} 何時:{1:D}", thing, DateTime.Now))  

7     End Sub

8 End Class

實作介面類別2 : 實作 介面1和介面2



view sourceprint?01 Public Class KHHEmployee  

02     '實做同樣的介面  

03     Implements IWork, ISales  

04   

05     '工作  

06     Public Sub working(ByVal thing As String) Implements IWork.working  

07         System.Console.WriteLine(String.Format("KHH員工 做...{0} 何時:{1:D}", thing, DateTime.Now))  

08     End Sub

09     '業務推廣  

10     Public Sub Promotion() Implements ISales.Promotion  

11         System.Console.WriteLine("KHH業務推廣!!")  

12     End Sub

13 End Class

Agent :代理



view sourceprint?01 Public Class Company  

02     'Aggregation依存關係(Pull拉式)  

03     '公司請過來人力仲介  

04     Private _service As WorkingService = New WorkingService()  

05     '屬性 取得Servicer  

06     'Public ReadOnly Property Service() As WorkingService  

07     '    Get  

08     '        Return _service  

09     '    End Get  

10   

11     'End Property  

12     '窗口Method(Proxy) 代理值行workingService.addEmployee()  

13     Public Sub addEmployee(ByVal emp As IWork)  

14         If (Not emp Is Nothing) Then

15             _service.addEmployee(emp)  

16         End If

17     End Sub

18     '要求所有員工工作  

19     Public Sub doWork()  

20         '掃描每一個不同類型員工(沒有繼承關係)  

21         For Each w As IWork In _service.Employees  

22             '判斷特殊類型物件  

23             If TypeOf w Is KHHEmployee Then

24                 w.working("資訊工作...")  

25                 '實做業務介面  

26                 DirectCast(w, ISales).Promotion()  

27             Else

28                 w.working("工作...")  

29             End If

30         Next

31     End Sub

32 End Class

主要類別



view sourceprint?01 Public Class Company  

02     'Aggregation依存關係(Pull拉式)  

03     '公司請過來人力仲介  

04     Private _service As WorkingService = New WorkingService()  

05     '屬性 取得Servicer  

06     'Public ReadOnly Property Service() As WorkingService  

07     '    Get  

08     '        Return _service  

09     '    End Get  

10   

11     'End Property  

12     '窗口Method(Proxy) 代理值行workingService.addEmployee()  

13     Public Sub addEmployee(ByVal emp As IWork)  

14         If (Not emp Is Nothing) Then

15             _service.addEmployee(emp)  

16         End If

17     End Sub

18     '要求所有員工工作  

19     Public Sub doWork()  

20         '掃描每一個不同類型員工(沒有繼承關係)  

21         For Each w As IWork In _service.Employees  

22             '判斷特殊類型物件  

23             If TypeOf w Is KHHEmployee Then

24                 w.working("資訊工作...")  

25                 '實做業務介面  

26                 DirectCast(w, ISales).Promotion()  

27             Else

28                 w.working("工作...")  

29             End If

30         Next

31     End Sub

32 End Class

主程式



view sourceprint?01 Module TestCompany  

02     '主程式  

03     Public Sub Main()  

04         '建構公司物件->拉出WorkingService->List集合物件  

05         Dim com As New Company()  

06         '徵求員工 -問出內部參考WorkingService  

07         'Dim service As WorkingService = com.Service  

08         '加員工  

09         com.addEmployee(New Employee())  

10         com.addEmployee(New KHHEmployee())  

11         com.addEmployee(New Employee())  

12   

13         '公司所有員工工作  

14         com.doWork()  

15     End Sub

16 End Module
個人簽名@

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題