想象一下,我有一个抽象的“FriendEvent”模型,它有几个不同的具体实现,即。 FriendPosted,FriendCommented,FriendUploadedPhoto等。它们都应该以我对FriendEvents的视图呈现,但应该在视觉上彼此不同(例如,FriendUploadPhoto应包含缩略图)。多态视图模式
什么是良好的面向对象的模式来实现这一目标?
我有兴趣了解是否有替代方法在视图代码中打开模型的具体类。这种感觉不对,因为它使用条件逻辑,我认为它应该可以依赖于多态,但我很难想出一个更好的主意。有没有建立模式来解决这个问题?
(我显然不希望实现模型视图逻辑,因为这将被混合的责任,因为我可能要为每个型号不同的看法)
澄清:如何在模型层中建模不同的事件类型不是问题。有几种众所周知的面向对象解决方案。问题涉及视图代码,它负责直观地呈现模型。我想我有一个EventView类来处理显示事件(模型)。问题是:如何实现这个类没有切换块,根据事件的具体类型选择不同的代码路径是渲染。
听起来像你只想使用继承。有一个具有所有常用属性的基类,然后让您的具体实现从您的基类继承。 – 2011-04-14 12:12:58
@Evan显然我在模型层使用继承来实现多态。问题涉及视图代码。 – KaptajnKold 2011-04-14 12:27:30
任务陈述太少。班级的责任和合作者是什么?在最简单的情况下,它可能是带有对EventType类的引用的单个Event类的实例。 – 2011-04-14 13:01:56