0

私はいくつかのtxtを読み込んでアルゴリズムを実行するmainのみを持つクラスを持っています。

私のクラスは次のようになります:

class doThejob{
     public static void main(String args[]){
            //*****start part A******
           //do the reading from text file, and tokenize it
           // process into the form I need,
           //about 10-30 lines of codes
           //******End of part A*****

           //then run the algorithms
           algorithm alg=new aglorithm();
           Object output = alg.x(input);

           //****Part B**** output to txt, about 10~40 lines

     }
}

class algorithm{
      private void  a(Object x){
             //do something
           return (Object)result;
      }

}

これらのパーツAとパーツBを新しいクラスに抽出し、それらをパブリックメソッドとして設定する必要があることを誰か教えてもらえますか.以下のように

class Io{
    public Object readFromTxt(String path){
    }
    public void outputToTxt(String path){
    }

}

そして、それらをセットアップしてから、以下のように使用すると、OOP が増えますか?

class doThejob{
     public static void main(String args[]){
           Io dataProcess= new Io();

           Object input = dataProcess.readFromTxt(args[0]);
           algorithm alg=new aglorithm();
           Object output =alg.x(input);

           dataProcess.readFromTxt(args[1],output);

     }
}

class algorithm{
      private Object  a(Object x){
             //do something
      }

}
4

1 に答える 1

4

読みやすいように入力してください。

これを別のクラスに分離することは、単一責任の原則に従っています。これにより、コードが読みやすくなり、後で変更しやすくなります。

これをさらに拡張したい場合は、入出力用のインターフェース (例: IIO) を作成できます。このようにして、このインターフェイスを IO クラスに実装し、名前を FileIO に変更できます。データベース アクセスなど、別の形式の IO を作成する場合はいつでも、このインターフェイスを実装する DatabaseIO クラスを作成し、この新しい型のメイン メソッドのインスタンスを変更するだけです。

public interface IIO
{
    string Read();
    void Write(string text);
}

public class FileIO : IIO
{
     string path;

     public FileIO(string filePath)
     {
         path = filePath;
     }


     public string Read()
     {
         // read from file and return contents
     }

     public void Write(string text)
     {
         // write to file
     }
}

public class SqlServerIO : IIO
{
    SqlConnection conn;

    public SqlServerIO(string connectionStringName)
    {
        // create the connection
    }

    public string Read()
    {
        // read from database
    }

    public void Write(string text)
    {
        // write to database
    }
}

インターフェイスを抽出すると、作業中のコードをいじることなくいつでも実装を切り替えることができるため、コードがより保守しやすくなります。また、単体テストも容易になります。

于 2013-02-25T15:28:21.707 に答える