熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

設計模式與VB .net代碼 外觀模式,合成模式

2013-11-13 10:27:17  來源: .NET編程 

  外觀模式

  就是將一大堆功能合並成一個接口提供給客戶代碼

  比如一個Window類用戶就不需要手工編寫很多創建窗體的代碼 這就是外觀模式

  其實很多模式我們在編寫代碼時就在使用只不過沒這麼稱呼而已也提醒我看模式書籍時盡量不要太關注模式的名稱

  例如我們可以將錯誤處理封裝在一個類中:

  Public Class ErrorManage
        Public Shared Sub RecordError( _
        ByVal errorMsg As String _
        ByVal errType As ErrorType _
        Optional ByVal isWriteNote As Boolean = False)
       

  
        End Sub

  Enum ErrorType
        warning
        wrong
        suggest
        End Enum
        End Class

  客戶代碼:          ErrorManageRecordError(some description ErrorManageErrorTypesuggest False)

  這就是外觀模式Perry覺得有點兒唬人

  以前函數可以看做外觀模式的一種但在VB Net中是用類來組織代碼因此我們一般說這個類使用了外觀模式其實是指這個類是一個服務類提供一些靜態成員給客戶代碼使用而已而這些靜態成員將客戶端需要許多步驟才能完成的工作簡化了

  此外觀和程序的外觀完全沒關系這個模式不是教我們做UI的

  Perry覺得唬人不是對外觀模式的輕視而是自己先被模式嚇到了模式可以讓我們在編寫程序時更清晰更有把握交流起來也明確

  合成模式

  簡單來說一個類中能包含自身的集合就叫合成模式常見的如目錄下有目錄和文件

  樹是合成模式的其中的一種抽象

  合成模式有一個前提:

  其中的被包含對象要和包含對象有一個公共接口

  一棵簡單的樹:          Public Interface ComponentInterface
        Function Parent() As ComponentInterface
        Function Children() As ComponentInterface()
        Function IsHaeChildren() As Boolean
       
        End Interface
        Public Class Components
        Implements ComponentInterface
        Public Function Children() As ComponentInterface() Implements ComponentInterfaceChildren
        End Function
        Public Function IsHaeChildren() As Boolean Implements ComponentInterfaceIsHaeChildren
        End Function
        Public Function Parent() As ComponentInterface Implements ComponentInterfaceParent
        End Function
        End Class
        Public Class Component
        Implements ComponentInterface
        Public Function Children() As ComponentInterface() Implements ComponentInterfaceChildren
       
        End Function
        Public Function IsHaeChildren() As Boolean Implements ComponentInterfaceIsHaeChildren
        Return False
        End Function
        Public Function Parent() As ComponentInterface Implements ComponentInterfaceParent
       
        End Function
        End Class

  開始Perry始終不明白為什麼要一個公共接口?

  那是因為客戶代碼在操作時需要有一致性需要遍歷這些沒有公共接口就不能實現

  比如:目錄可以復制剪切也可以打開下一級回到上一級

  它也規范了合成模式是同接口對象的合成而不同對象聚合在一起?可以用前面的外觀模式來解釋或者後面還有對應的模式呢?

  樹只是合成模式的一種簡單表示復雜些的有圖如何用合成模式表示圖或者說如何遍歷圖需要看<<數據結構>>

  合成模式典型應用在結構(物料BOM)流程性質管理(過程節點)


From:http://tw.wingwit.com/Article/program/net/201311/13679.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.