私は、いくつかのユーザをインポートし、ユーザ情報を変換してデータベースに挿入するクラスを持っています。私はファイルImportEmployees
に、データをインポートするために2つの他のクラスを呼び出すメソッドを持っています。 1つのクラスは特定の基準に一致するユーザーを取得し、もう1つのクラスは残りのユーザーを処理します。これら2つのクラスは、1つのメソッドを除いて全く同じことを行います。その1つの方法は、ユーザーデータを正しく抽出して、2つの異なるクラスを呼び出す方法です。これをうまく処理する良い設計パターンとは何か、あるいはこれを処理してコードの重複を取り除く良い方法です。ここでPHPファイルをリファクタリングしてコードの複製を削除する
は、エントリー・ポイント・クラスImportEmployees
です:full class here
public function handle()
{
handle(new ImportNapaUsers($this->file));
handle(new ImportNonNapaUsers($this->file));
}
そしてImportNapaUsers
クラス:full class here
private function extractUsers()
{
$users = new ExtractNapaUsers($this->users);
$this->napaUsers = $users->getUsers();
}
そしてImportNonNapaUsers
クラス:full class here
private function extractUsers()
{
$users = new ExtractNonNapaUsers($this->users);
$this->napaUsers = $users->getUsers();
}
$this->users
は、これらの両方で正確に同じです。また、両方のクラスは、extractUsers
メソッドを除いて同一です。
'identical'いや'新しいExtractNapaUsers'があります'新しいExtractNonNapaUsers'メソッドは同じではありません。それはgitのコードですか?そうでない場合はどうしてこれを変更したいのですか? – JustOnUnderMillions
私の最初のコメントを無視してください。 '良いデザインパターン'依存性注入が最初に探します。あなたの 'handle()'メソッドは本当に良いoopに反対しています。クラスメソッドで 'new'を使用しないようにしてください – JustOnUnderMillions
@JustOnUnderMillions私はあなたが精緻化するのが大好きです。 – dericcain