有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果相同的输入来自不同的数据源,并且最终的对象完全相同,那么应该使用哪种设计模式

我需要创建一个对象,其中输入可以来自不同的数据源,并且创建的最终对象具有相同的类类型。比如说

输入源(构造函数参数)可以是:

1.文件路径为字符串
2.内容为字符串

注:两者的数据类型相同,为字符串

我应该使用哪种设计模式

我正在考虑使用“简单工厂”并添加以下方法:

ClassA fromFilePath(String){}
ClassA fromContent(String){}

但是,不确定将逻辑放在何处,以便从输入源加载/处理内容以创建/初始化实例

请告知


共 (1) 个答案

  1. # 1 楼答案

    我认为Factory适合你的问题:

    interface IInputParser {
        ClassA Parse(string input);
    }
    
    class ContentParser implements IInputParser {
        public ClassA Parse(string input) {
            // create object from content
        }
    }
    
    class FileParser implements IInputParser {
        public ClassA Parse(string input) {
            // create object from file
        }
    }
    
    class ParserFactory {
        public IInputParser GetParser(string input) {
            if (IsPath(input))
                return new FileParser();
            else
                return new ContentParser();
        }
    
        boolean IsPath(string input) {
            // returns true if input is a file path
        }
    }
    

    即使在这种情况下,你也可以考虑Chain of Responsibility,但我个人更喜欢Factory