異なる種類/クラスの別のインスタンスからインスタンスを作成します。
簡単な例: ORM を使用していて、メール キューをデータベースに保存しています。次に、サードパーティのライブラリを使用して、ある時点で一括メールを送信する必要があります。
あなたのオブジェクト(PHPはここでは関係ありません、簡単にするためにパブリックプロパティ):
class Mail
{
/**
* @var string
*/
public $senderText;
/**
* @var My\App\Entity\User
*/
public $user;
/**
* @var \Doctrine\ORM\ArrayCollection
*/
public $attachments;
}
...サードパーティの「メール」オブジェクトは大きく異なります。たとえば、次のようなことを行う必要がある場合があります。
$mail = /* hydrated */;
$user = $mail->getUser();
$mailer = new ThirdPartyMailer();
// Fill message properties
$message = $mailer->createMessage();
$fullName = sprintf('%s %s', $user->getFirst(), $user->getLast());
$message->addFrom(array($fullName => $user->getEmail()))
// Create and add attachments
foreach($mail->getAttachments() as $attachment)
{
$message->attach($mailer->createAttachment($attachment->getFullPath()));
}
これはパターンですか?あるインスタンスを別のインスタンスから作成/変換するクラスのような、オブジェクト コンバーターのようなもの...