具有2个状态的ListView控件的设计模式?

时间:2012-04-11 15:07:01

标签: c# design-patterns user-interface

我在Windows窗体中有ListView控件,这是由于在图标视图或详细信息视图中显示项目列表。我想分离ListView状态逻辑并创建2个状态类IconsState和DetailsS​​tate,从IState中获取它们,从UI窗口调用所有方法。

在详细视图中有RetrieveVirtualItem事件,在图标视图中有DrawItem事件。为了从UI中存在的IState变量调用它们,两个国家的后代类都必须实现它们。在DetailsS​​tate中使用DrawItem只会返回。对于IconsState中的RetrieveVirtualItem也是如此。

是否有其他设计方法可以避免在状态中实现空方法?

1 个答案:

答案 0 :(得分:0)

是的,有更好的方法。这是一种设计气味,迫使一个类有一个不应该在那里的成员,即用你的话说“在DetailsS​​tate中有DrawItem只做返回”。

或者,您可以使用MVP模式,这将允许您更大的可测试性。在MVP的被动视图变体中,您将拥有一个模型,两个哑视图和一个演示者,它根据用户的选择决定渲染哪个视图。

MVP的其他资源:
SO tag for MVP
Passive view sample
MVP examples for Windows Forms