友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VB2008从入门到精通(PDF格式英文版)-第103章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




              to labor to find the bug。 A debugger has its uses; but when writing good tests in many scenarios; you will rarely  

               need to use it。 

                    And speaking of writing tests; as I noted in Chapter 6; in this book; I could introduce a testing framework  

               like NUnit (http://nunit。org) or Microsoft Visual Studio Team System (http:// 

               msdn2。microsoft。/en…us/vstudio/default。aspx)。 When you are writing production code; you  

               will probably use such a testing framework。 Testing frameworks do not help you to write your tests; but rather  

               help you by providing support code to generate errors; log problems; and indicate progress of the tests。 Do  

               not get misled by tools that say they can write the tests for you。 No tool can write your tests; because that  

               would imply the tool understands the context of your code。 And since such a tool does not yet exist; you will  

               need to write your own tests。 



            Implementing Room Groupings  



            Room groupings are collections of rooms that fall into a specific organization。 The idea behind  

            a grouping is to perform group operations without having to explicitly examine a room before  

            performing an operation。 For example; in the case of the museum; we don’t need to figure out  

            whether a room is public or private each time a global operation is being performed。 

                 The organization of the collection is that there can be multiple room groupings that are  

            linked together; and within a grouping; there are multiple rooms that can be grouped together。  

            The linked list structure has two levels and is coded as follows (in  LibLightingSystem):  



                Class RoomGrouping  

                    Inherits BaseLinkedListItem 

                    Public Rooms As Room 

                    Public Description As String 

                End Class 



                Class Room  

                    Inherits BaseLinkedListItem 

                    Public ObjRoom As IRoom 

                End Class 


…………………………………………………………Page 235……………………………………………………………

                             C H AP TE R   8   ■    L E AR N IN G   AB O U T   CO M P O N E N T O R IE N TE D   A R CH I TE C TU R E 213 



     The class declaration Room represents an individual room。 But notice how it derives from  

BaseLinkedListItem; which seems to imply that Room is actually many rooms。 This is part of the  

linked list implementation; it is like a chain; where the chain is created by individual links。 

     The RoomGrouping class has two data members: Rooms; which represents the list of rooms in  

the grouping; and Description; which represents an easy…to…understand description of the  

grouping。 The single data member for Room is a reference to an  IRoom interface instance。  

     The room groupings are managed by the  LightingController class。 An initial implemen

tation of  LightingController is as follows: 



    Public Class LightingController  

        Private _roomGroupings As BaseLinkedListItem = New RoomGrouping() 

    End Class 



     When dealing with linked lists; you have a problem: which is the first element of a list? When  

you use arrays; an empty list of arrays is an array with no references。 But there is an explicit  

array object。 Using the linked list; an empty linked list is a list that does not exist。 Thus; when  

you want to create a list; you need a room。 In  LightingController; the first element is an instance  

of RoomGrouping; which is not a room grouping; but serves as a placeholder。 To insert a room  

grouping; you could simply use this code: 



_roomGroupings。Insert(NewRoomGroup()) 



     Without the placeholder; you would need to write the following code whenever you  

wanted to add an element into the list。 



If _roomGroupings Is Nothing Then 

    _roomGroupings = NewRoomGroup() 

Else  

    _roomGroupings。Insert(NewRoomGroup()) 

End If 



     The code that uses the placeholder is shorter and simpler; however; it also requires a dangling  

instance of RoomGrouping that has no real value。 I chose the dangling approach because I am  

making the decision that a room grouping with no identifier is the default room grouping。 



Adding a Room Grouping 



The following code adds a room grouping (added to the class  LightingController)。 



    Public Function AddRoomGrouping(ByVal description As String) As Object 

        Dim grouping As RoomGrouping = New RoomGrouping() _ 

        With { _ 

              。Description = description; _ 

              。Rooms = Nothing 

             } 

        _roomGroupings。Insert(grouping) 

        Return grouping 

    End Function  


…………………………………………………………Page 236……………………………………………………………

214       CH AP T E R   8   ■    L E A R N IN G   AB OU T   CO M P O N E N TO R IE N T E D  AR C HI TE CT U R E 



                To add a new room grouping; you instantiate RoomGrouping; assign the data members; and  

           then call the method _roomGroupings。Insert() to insert the new room grouping into the linked list。 

                Let’s look at the technique for assigning data members; called object initialization。 In  

           previous examples; when an object was instantiated and we wanted to assign default values;  

           we would create a constructor with the appropriate parameters。 However; another way is to instan

           tiate the object and define a block that assigns the appropriate data members or properties。 In the  

           case of RoomGrouping; there are two publicly defined data members: Description and Rooms:  



                          。Description = description; _ 

                          。Rooms = Nothing 



                The Description and  Rooms data members have assign access; which is important as this  

           technique o
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!