0

Should be fairly simple but I want to get it right before I start coding. Let's say I coded a CustomLayout or CustomListView class that has a special behaviour on the elements it contains (eg highlighting when hovering above an element on a touchscreen).

I then want this CustomListView to be able to display different types of elements, for instance a Place, a Bookmark or a SearchResult. When displaying a Place it should display only the name, when displaying a Bookmark, it should display the name plus a time stamp for instance.

I know the wrong way to do this, i.e. in the CustomListView do something like

if (anInstance instanceof Bookmark)

What would be the best way to design my classes?

4

2 に答える 2

0

または、汎用のCustomListItemをサブクラス化して、これらの各タイプのクラスを実装してから、必要なタイプのアイテムをインスタンス化して返すFactoryを実装することもできます。

于 2013-01-11T04:49:05.673 に答える
0

CustomLayoutPlaceBookmarkなどに、含まれる要素をレンダリングするメソッドを含めるか、何らかのrender()ハンドル (ビューなど) を返して、呼び出し元render()がどこに配置すべきかを判断できるようにします。

レンダリング方法に関するすべてのロジックはこの関数に含まれ、説明したように、何が起こっているかによって異なります。

詳細については、複合パターンを参照してください。

于 2013-01-11T02:39:21.683 に答える