Design patterns 请建议设计模式

Design patterns 请建议设计模式,design-patterns,Design Patterns,我试图找出,在下面的场景中,什么样的模式最适合使用 我为用户提供了不同类型的数据表示。用户可以选择如何在屏幕上呈现数据 列表项 下拉列表 单选按钮列表 复选框等 我知道,抽象工厂或工厂方法将适合这里。但有没有办法摆脱以下情况: If (SomeType == SomeTypes.DropDown) { return new DropDownClass(); } 有没有更抽象的方法?您可以为SimpleFactories创建一个列表,然后依次询问每个SimpleFactories是否

我试图找出,在下面的场景中,什么样的模式最适合使用

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

  • 列表项
  • 下拉列表
  • 单选按钮列表
  • 复选框等
  • 我知道,抽象工厂或工厂方法将适合这里。但有没有办法摆脱以下情况:

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

    有没有更抽象的方法?

    您可以为SimpleFactories创建一个列表,然后依次询问每个SimpleFactories是否可以处理该类型,如果可以,让它创建该组件

    它看起来是这样的:

    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;
    }
    
    interface SimpleFactory{
    布尔canHandle(SomeType类型);
    组件创建()
    }
    阶级工厂{
    
    在.Net中,我经常使用泛型、继承和多态性的组合来确定运行时特定请求的处理程序


    当你在某个时候,甚至在工厂里,使用post中描述的东西时,这一切都很容易,你必须决定返回什么。。。