2015-01-07 277 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)函数? –