gpt4 book ai didi

objective-c - 实例化一个对象的类型取决于另一个对象的类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:28 27 4
gpt4 key购买 nike

作为我模型的一部分,我有一个名为“Slide”的类,它有两个子类:“QuizzSlide”和“ImageSlide”。我还有另一个名为“SlideView”的类(这是我的观点的一部分),它有两个 child “QuizzSlideView”和“ImageSlideView”。

现在我要做的是浏览一组幻灯片并创建正确的 SlideView 来显示它们。问题是,要实例化 SlideView,我需要知道幻灯片的类型。 QuizzSlide 应该创建一个 QuizzSlideView,而 ImageSlide 应该创建一个 ImageSlideView。我看到两个选项:

  1. 内省(introspection)。我不喜欢内省(introspection),因为它意味着构建对象的类必须详尽地列出它可以处理的对象类型。如果我添加另一种类型的幻灯片,我必须修改构建器类。

  2. 使幻灯片创建其关联的 View 。所以我有一个 getView 函数,它被 Slide 的每个子级覆盖,以便为该幻灯片创建正确的 View 。这会起作用,并且会使维护更容易,但它会使程序变得一团糟,因为模型不应该包含对其所代表的 View 的引用。

差不多就这些了。我还有其他选择吗?关于如何将我的模型与我的 View 分离、根据模型类型构建正确的 View 并避免自省(introspection),有什么想法吗?

谢谢

最佳答案

为什么不是 Factory method Slide 类中的 createView(),当在 QuizzSlide 中实现时返回一个 QuizzSlideView 而在 ImageSlide 中 返回指向正确模型的 ImageSlideView

这让我想起了 Iterator模式,其中 CreateIterator() 是工厂方法。

Iterator pattern in UML http://www.silversoft.net/docs/dp/hires/Pictures/itera040.gif

关于objective-c - 实例化一个对象的类型取决于另一个对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24736736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com