gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:39:21 28 4
gpt4 key购买 nike

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

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

是否有另一种设计方法来避免在状态中实现空方法?

最佳答案

是的,有更好的方法。强制一个类拥有一个不应该在那里的成员是一种设计味道,即用你的话来说“在 DetailsS​​tate 中有 DrawItem 除了返回什么都不做”。

或者,您可以使用 MVP 模式,这将使您具有更大的可测试性。在 MVP 的被动 View 变体中,您将拥有一个模型、两个哑 View 和一个根据用户选择决定呈现哪个 View 的展示器。

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

关于c# - 具有 2 个状态的 ListView 控件的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108725/

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