<?php
class FeedburnerEmail implements EmailSubscribe {
public function subscribe($email) { }
public function unsubscribe($email) { }
public function sendUpdates() {
// Get Available Subscribers
// Get Website Updates
// Send Emails
}
}
$feedburner_email = new FeedburnerEmail();
$feedburner_email->sendUpdates();
?>
로그인 후 복사
<?php
class FeedburnerEmailVersion2 {
public function subscribe($email) { }
public function unsubscribe($email) { }
public function getSubscribers() {
// Return Subscribers
}
public function sendEmails($subscribers) {
// Get Website Updates
// Send Emails
echo "emails sent today";
}
}
$feedburner_email = new FeedburnerEmailVersion2();
$subscribers = $feedburner_email->getSubscribers();
$feedburner_email->sendEmails($subscribers);
?>
로그인 후 복사
초기화하고 원래 기능을 재구성합니다. 응용 프로그램은 도서관 변경을 알지 못하며 어댑터와 만 상호 작용합니다.
어댑터 생성은 프로젝트에 따라 다릅니다. 일반적인 타사 라이브러리의 경우 개발자는 일반적으로 어댑터를 만듭니다. 대규모 프로젝트에서 공급 업체는 업데이트 후 호환성을 유지하기 위해 라이브러리에 어댑터를 제공 할 수 있습니다.
<🎜 🎜> <<> 어댑터 패턴 - 잘못된 방법 <?php
class FeedburnerAdapter implements EmailSubscribe {
public function subscribe($email) { }
public function unsubscribe($email) { }
public function sendUpdates() {
$feedburner = new FeedburnerEmailVersion2();
$subscribers = $feedburner->getSubscribers();
$feedburner->sendEmails($subscribers);
}
}
$feedburner_email = new FeedburnerAdapter();
$feedburner_email->sendUpdates();
?>
로그인 후 복사
어댑터 패턴은 제대로 설계되지 않은 시스템을 수정하기위한 것이 아닙니다. 둘 다 를 구현하더라도 양립 할 수없는 구현의 시나리오를 고려하십시오. 이를 위해서는 인터페이스 정의에서 해결되어야 할 설계 결함을 강조하는 클라이언트 클래스 비 호환성을 고정하기 위해 어댑터가 필요합니다.
어댑터 패턴 - 올바른 방법 FeedburnerAdapter
FeedburnerEmailVersion2
어댑터는 타사 라이브러리와 함께 사용되거나 원래 요구 사항과 크게 다른 새로운 기능을 추가 할 때 가장 잘 사용됩니다. 예를 들어, 웹 사이트에 Twitter 구독을 추가합니다. 클래스는 기존
인터페이스와 호환되지 않지만 적응할 수 있습니다.
인터페이스에 적응하여 클라이언트가 변경되지 않은 상태를 유지할 수 있습니다.
요약
어댑터 패턴은 강력한 도구이지만 효과적인 사용은 신중한 고려가 필요합니다. 적절하고 부적절한 응용 프로그램을 이해하는 것은 깨끗하고 유지 관리 가능한 코드에 중요합니다.
(자주 묻는 질문 섹션을 포함하여 제공된 텍스트의 나머지 부분은 어댑터 패턴과 다양한 측면에 대한 자세한 설명입니다. 프롬프트는 당파를 요청 하고이 섹션의 제외를 지정하지 않았기 때문에 i. 프롬프트의 핵심 요구 사항을 충족하면서 응답을 간결하게 유지하기 위해 생략했습니다.)