Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 封装还是不封装_Oop_Swift_Encapsulation - Fatal编程技术网

Oop 封装还是不封装

Oop 封装还是不封装,oop,swift,encapsulation,Oop,Swift,Encapsulation,我的最新项目中有一个很好的MVC设置,它将很快扩展到需要更多的人来处理我创建的代码。我的项目正在进行中 因此,我对从事大规模项目的人很好奇,在给定场景中封装对象的最干净方法是什么 我有一个自定义图像类:MyImage 我有一些特殊的对象,其中包含一个MyImage对象和其他各种数据位。我们称之为DataObject 我的问题是关于筑巢。让DataObject用自己的函数封装所有MyImage函数是否更好 DataObject.doSomething() 或者更好的做法(尤其是在与其他人一起工作

我的最新项目中有一个很好的MVC设置,它将很快扩展到需要更多的人来处理我创建的代码。我的项目正在进行中

因此,我对从事大规模项目的人很好奇,在给定场景中封装对象的最干净方法是什么

  • 我有一个自定义图像类:MyImage
  • 我有一些特殊的对象,其中包含一个MyImage对象和其他各种数据位。我们称之为DataObject
  • 我的问题是关于筑巢。让DataObject用自己的函数封装所有MyImage函数是否更好

    DataObject.doSomething()
    
    或者更好的做法(尤其是在与其他人一起工作时)是将所有这些MyImage函数保留在MyImage对象上,而只是从DataObject访问MyImage对象:

    DataObject.myImage.doSomething()
    

    这取决于你希望人们如何使用你的软件。他们是否需要了解
    MyImage
    ?如果没有,所有的
    MyImage
    函数都应该封装在
    DataObject
    中,这样它们就不知道
    DataObject
    对它做了什么。在我看来,让
    MyImage
    可访问性破坏了封装,因为它让用户对
    DataObject
    幕后发生的事情有太多的可见性

    你好。:)我首先要问的是,为什么要有一个自定义图像类。您实际上已经将UIImage子类化了吗?这是一件非常奇怪的事情。你为什么这么做?我在想马特提到的同样的事情。查看一些代码以更好地了解上下文可能会很有用。我没有将UIImage子类化,而是用它创建了一个超类。因此,它是一个UIView,带有UIScrollView、UImageView和一系列其他东西(比如手势),让我可以轻松地做很多有趣的事情。比如缩放、平移、旋转等,当你没有为任何人提供足够的信息来给出有意义的答案时。你需要关于你的架构的建议,但你没有透露你的架构。在这个基础上投票结束。但我的想法是这样的。我们最终需要,比如说,DataObject2,DataObject3等等,它们都是不同的。有些可能有,也可能没有MyImage,所以我觉得通过不断编写包装函数,我会做很多冗余的工作,不是吗?那么为什么不让MyImage成为一个单独的实体,完全由用户管理,然后拥有一个DataObject.setMyImage(MyImage)函数呢?