這個「關係」應該加嗎?

2021-06-27 08:30:21 字數 1330 閱讀 6853

在做高校平台這塊內容的時候,負責ef的封裝,我們幾個人在做好相應封裝後,為了測試其功能,然後,又做了乙個具體系統的乙個架構,然後測試我們封裝的東西,由於自己需要轉到wf那裡了,所以,這塊內容需要和別人交接一下,在交接的過程中,講解程式設計上出現了乙個分歧,針對於設計上的分歧,本篇部落格將圍繞著兩個問題來闡述這個分歧:為什麼要這麼設計和為什麼不在basedal和ibasedal之間新增乙個實現關係。

a、設計圖

b、右邊的設計能實現?

從實現的角度上說能實現,因為我們就是根據右邊的設計做出了乙個demo,然後,我們從面相物件的角度講解右邊的圖可以實現。

抽象ibasedal這個公共介面,然後所有子介面都繼承這個介面,那麼,所有子介面就擁有了父介面中的所有宣告的方法,從而達到不重複寫相同**的功能,實現**復用的功能,這個也是抽象類的乙個重要作用。

userdal實現iuserdal介面,depdal實現idepdal介面,因為iuserdal和idepdal繼承了ibasedal,所以,userdal和depdal裡面的具體實現中,一定會用相同方法和功能的**,此時,我們把這些抽象到basedal中,然後,userdal繼承basedal,就實現了我們右圖設計的產生了,即:右邊的設計從實現的角度上說可以實現。

c、為什麼不用左邊的設計?

為什麼不用左邊的設計,左邊的設計一看就十分的了然了,之所以不用,是因為basedal和ibasedal之間幾乎不存在那種型別上的關係,僅僅存在的關係是,ibasedal中的方法,basedal都實現了,這個絲毫不具有說服力,讓我在設計的過程中新增這個實現關係,首先,我們要知道為什麼要產生ibasedal,就是為了使自己介面不需要寫重複性定義的方法了,然後,我們要清楚為什麼要產生basedal,同樣的道理,是因為userdal和depdal中有公共功能的實現,所有,為了達到公用的目的才出現的,不是因為有了ibasedal,所以,才有了basedal,沒有ibasedal,basedal仍可以存在,因為所有子類中可能有相同私有方法的存在,再來說,右邊的設計對於我們物件導向的理解非常的有幫助,可以幫助我們加深對物件導向的理解。

另一方認為左邊的這種方式更好,然後,從後期新增乙個公共方法等方面說,這裡我仍認為basedal和ibasedal之間加了那條實現關係的線後,就不能稱得上好的物件導向的設計。

上面的圖的兩種設計方式,從實現上說都可以實現,我們雙發也都認同這個,這個是非常成功的地方,但是,對於採取那種具體設計來說,那真的是仁者見仁,智者見智了,但是,我扔堅持右邊的設計。

STAR WAR 是這個關係嗎?

紫丁香bbs上有同學貼出了star war的順序,我好多沒看過的,哪天全下下來從頭到尾看一遍 star war 是這個關係嗎?發信站 哈工大紫丁香 mon jun 6 22 48 14 2005 轉信 第一集 star wars episode the phantom menace 星戰前傳 魅影危...

所有網路通訊都應該加密嗎?

如今這個時代,免費 開放的wifi無處不在。這給wifi竊聽者有機可乘。當你通過wifi的接入點訪問各種 時,他們可以很容易地擷取你用以標識身份的cookie。我曾經在 breaking the web s cookie jar 開啟網路的cookie罐頭 一文中談到過這一點。而且如果不對現有網路基...

應該這麼寫嗎?

應該這麼寫嗎?delphi windows sdk api 我想獲得表weixuclchild.tmoney和weixuwxchild.tmoney中的sum值 select sum weixuclchild.tmoney sum weixuwxchild.tmoney from weixuclch...