理解java中的设计模式

理解java中的设计模式,java,Java,我在某个地方读到,开发人员应该始终开发接口,然后实现该接口。我想我只是想学习这些构建器模式。。但这是我的用例 我有一个中心班。。。说ProcessFile 现在,我正在编写它可以处理的两种格式,一种是csv,另一种是json 如何设计这些类 我猜是这样的: public interface CustomFormat{ //couple of signatures } public class csv implements CustomFormat{ } public class jso

我在某个地方读到,开发人员应该始终开发接口,然后实现该接口。我想我只是想学习这些构建器模式。。但这是我的用例

我有一个中心班。。。说
ProcessFile

现在,我正在编写它可以处理的两种格式,一种是csv,另一种是json

如何设计这些类

我猜是这样的:

 public interface CustomFormat{
  //couple of signatures
}
public class csv implements CustomFormat{

}

public class json implements CustomFormat{
}
public class ProcessFiles{
//somehow uses that CustomFormat interface??
}
实现这一点的最佳方式是什么?

实现这一点的最佳方式是什么

我不会在接口名称中使用Custom这个词。大概 FileFormat.java

public interface FileFormat {

    public void setFormat(int quantity);
}
CSV.java

public class CSV implements FileFormat{

    @Override
    public void setFormat(int quantity) {
        // TODO Auto-generated method stub

    }
}
public class JSON implements FileFormat{

    @Override
    public void setFormat(int quantity) {
        // TODO Auto-generated method stub

    }
}   
JSON.java

public class CSV implements FileFormat{

    @Override
    public void setFormat(int quantity) {
        // TODO Auto-generated method stub

    }
}
public class JSON implements FileFormat{

    @Override
    public void setFormat(int quantity) {
        // TODO Auto-generated method stub

    }
}   

以javaPlease42的答案为基础。我会将ProcessFiles重命名为FileProcessor或类似的东西。一个好的经验法则是用名词命名类,用动词描述名词的功能。下面是一个它可能看起来像什么的例子

public class FileProcessor {

    public void process(CustomFormat file) {
        // pass in the interface, that way you can use any implementing class 
        // like csv or json
    }

}

谷歌的“战略模式”,你可能会发现一些有用的例子。看起来不错,但如果应用程序结构是不变的(没有动态),我真的建议你不要遵循任何特定的模式。