私はftp接続を作成し、そこに何かして接続を閉じる必要のある40のサプライヤを持っています。だから、40人のサプライヤはすべて自分たちのクラスを持っていて、彼らはすべてftpサーバの接続と切断を持っていますが、それらはすべて異なった処理方法を持っています。だから、このような状況で使用するデザインパターンは何ですか?
ftp.Connect();
//do something - this is different for all the classes
ftp.Close();
部分はすべてのために異なる何かをする、それは、それは異なるものを使用しない別の変数など
私が考えたもの:
だから基本的に私はこの方法で40回のクラスを持っています私は、すべての40のサプライヤでインスタンス化される新しいクラスを作成します。私がここに持っている問題は、すべての40社のサプライヤーのすべてのメソッドは、そのプロセスの入力パラメータは何でしょう異なる入力パラメータを持っているということです
public void Connect(FTPCredentials credentials, Process process)
{
var ftp = new FtpConnection(credentials.Host, credentials.Username, credentials.Password);
ftp.Open();
ftp.Login();
process(ftp);
ftp.Close();
}
public delegate void Process(FtpConnection ftp/*, string name*/);
:このクラスは、次のようになり一つの方法を持っているのだろうか?また、私はまだFtpConnection ftpパラメータを持っているので、私はあまり得られないと思います。つまり、Connectメソッドを使用するすべてのプロジェクトにFtpConnectionクラスを持つdllを追加する必要があります。
たとえば、仕入先での処理方法は、次のようになります。
process(string fileName) //and it would download fileName
process(string folderName) //create folder if it doesnt exist
私はそれがきれいになり、ここで使用することができますし、物事を簡単になるだろうデザインパターンがありますか?
単に 'Process'メソッド(' List'のパラメータ)をオーバーライドするか、何か不足する可能性がありますか? – hofmeister
接続/クローズは実際にコンストラクタ/ dispose(['using'](https://msdn.microsoft.com/en-us/library/yh598w02.aspx)ステートメントで置き換えることができます)、「IDisposable '。異なるメソッドについては、ジェネリックを使用してパラメータを設定クラスとして提供することができます。 '(var connection = new FTPConnection(...){...}'を使うと、設定のインスタンスはコンストラクタパラメータとして設定されても、 'Process()'の呼び出しごとに設定する必要はなく。 –
Sinatr