应该相当简单,但我想在开始编码之前把它弄好。假设我编写了一个CustomLayout
或CustomListView
类,它对其包含的元素有特殊行为(例如,当悬停在触摸屏上的元素上方时突出显示)。
然后,我希望此CustomListView
能够显示不同类型的元素,例如Place
,Bookmark
或SearchResult
。当显示Place
时,它应该只显示名称,当显示Bookmark
时,它应该显示名称加上时间戳。
我知道这样做的方法是错误的,即在CustomListView
做类似的事情
如果(anInstance instanceof 书签)
设计课程的最佳方法是什么?
答案 0 :(得分:0)
只需让CustomLayout
,Place
,Bookmark
等包含一个方法render()
,它可以呈现它包含的元素,或者让它返回某种句柄(像一个观点或类似的东西),以便任何正在呼叫render()
的人都可以确定它应该放在哪里。
关于如何渲染的所有逻辑都将包含在此函数中,并且会根据您所描述的情况而有所不同。
有关详细信息,请参阅Composite pattern。
答案 1 :(得分:0)
或者你可以通过继承一个通用的CustomListItem来实现每种类型的类,然后实现一个Factory,它将实例化并返回你想要的项目类型。