请提出设计模式

时间:2011-08-16 05:52:04

标签: design-patterns

我试图找出,在下面的场景中最好使用哪种模式。

我为用户提供了不同类型的数据表示。用户可以选择如何在屏幕上呈现数据。

  1. 列表项
  2. 下拉列表
  3. 电台按钮列表
  4. 复选框等..
  5. 我知道,抽象工厂或工厂方法将在这里设置。但有没有办法摆脱以下:

    If (SomeType == SomeTypes.DropDown)
     {
        return new DropDownClass();
     }
    

    有没有办法让它更抽象?

2 个答案:

答案 0 :(得分:0)

您可以为SimpleFactories创建一个List,并依次询问每个是否可以处理Type,如果是,则让它创建组件。

看起来像这样:

interface SimpleFactory{
    boolean canHandle(SomeType type);
    Component create()
}

class Factory{
    List<SimpleFactory) factories = ....

Component create(SomeType type){
    for(f : factories)
        if (f.canHandle(type) return f.create()
    return null;
}

答案 1 :(得分:0)

.Net中的

我经常使用泛型,继承和多态的组合来确定运行时特定请求的处理程序。

当您使用this post

中描述的内容时,这一切都非常简单