2015-01-07 192 views
0

我有一個很好的MVC安裝程序將與我的最新項目,這將很快擴大到需要更多的人在我創建的代碼工作。我的項目在Swift中。封裝或不封裝

因此,我對從事大型項目工作的人很好奇,最簡潔的方法是在給定場景中封裝對象。

  1. 我有一個自定義圖像類:MYIMAGE
  2. 我有其保持MYIMAGE對象的特殊對象,和數據的各種其它比特。我們稱之爲DataObject。

我的問題是關於嵌套。讓DataObject用自己的函數封裝所有MyImage函數會更好嗎?

DataObject.doSomething() 

或者是更好的做法(尤指與他人合作時)離開MYIMAGE對象上所有那些MYIMAGE功能,只是使從數據對象訪問的MYIMAGE對象:

DataObject.myImage.doSomething() 
+1

嗨,再次。 :)我會首先問你爲什麼有一個自定義圖像類。你實際上是UIImage的子類?這是一件非常奇怪的事情。你爲什麼這樣做? – matt

+0

我正在考慮馬特提到的同樣的事情。看到一些代碼更好地理解上下文可能會很有用。 – picciano

+0

我沒有UIImage的子類,我用它做了一個超級類。所以它是一個帶有UIScrollView,UImageView和其他一些東西(比如手勢)的UIView,它可以讓我輕鬆地做很多有趣的事情。像縮放,平移,旋轉等等 – Aggressor

回答

0

這取決於如何你希望人們使用你的軟件。他們是否需要知識MyImage?如果不是,MyImage的所有功能都應封裝在DataObject之內,因此他們不知道DataObject正在做什麼。在我看來,製作MyImage就是破解封裝,因爲它給了用戶太多的關於DataObject背後發生的事情的可視性。

+0

但是我的想法是這樣的。我們最終需要說,DataObject2,DataObject3等都是不同的。有些可能有也可能沒有MyImage,所以我覺得我會通過不斷編寫包裝函數來做大量的冗餘工作嗎? – Aggressor

+0

那麼爲什麼不讓MyImage成爲完全由用戶管理的獨立實體,然後有一個DataObject.setMyImage(MyImage)函數? –