>  기사  >  백엔드 개발  >  PHP 디자인 패턴 중 어댑터 패턴을 살펴보겠습니다.

PHP 디자인 패턴 중 어댑터 패턴을 살펴보겠습니다.

coldplay.xixi
coldplay.xixi앞으로
2020-06-30 17:42:342800검색

PHP 디자인 패턴 중 어댑터 패턴을 살펴보겠습니다.

PHP 디자인 패턴의 어댑터 패턴

  1. 생활 시나리오 문제 소개:

해외 여행이나 놀아야 한다면 이제 전자 제품이 많지만 각 전자 제품에는 전원이 필요합니다. 휴대폰, 컴퓨터, 카메라. . . 그런데 또 하나의 아주 분명한 문제가 있는데, 전자제품은 전원이 나가면 충전을 해야 한다는 것입니다. 우리나라에서는 일반적으로 우리가 구입하는 전자제품에 딸려오는 충전기가 220V입니다. 큰 곳이고 국가마다 요구 사항(규정)이 다릅니다. 예를 들어 미국은 120V입니다. 원리:

한 클래스의 인터페이스를 다른 인터페이스로 변환하여 호환되지 않는 인터페이스가 있는 클래스도 호환되도록 하세요.
  1. 사용자는 어댑터에 의해 변환된 대상 인터페이스 메소드를 호출하고 어댑터는 적응된 사람의 해당 인터페이스 메소드를 호출합니다

이점:

사용자는 적응된 사람을 볼 수 없습니다. 이는 분리된 작업입니다
어댑터 패턴은 구조적 디자인 패턴입니다

  1. 어댑터 패턴을 구현하는 세 가지 방법

  2. 1. 클래스 어댑터

위 UML 다이어그램에 따르면 US 전압 UsaInterface 인터페이스, 어댑터 클래스 Adapter, 중국 전압 인터페이스 Chine, 사용자 컴퓨터,

가 필요합니다. 여기서 중국 전압은 어댑터, 미국 전압은 최종 출력(타겟)이 되는 컨피규러

interface UsaInterface{
    public function outPut5V();}class China{
    private $voltage = 220;

    public function outPut220V()
    {
        return $this->voltage;
    }}class Adapter extends China implements UsaInterface{

    public function outPut5V()
    {
        // TODO: Implement outPut5V() method.
        $chinaVoltage = $this->outPut220V();

        return $chinaVoltage / 2 + 10 . "V";
    }}class Computer{
    public function index(UsaInterface $usa)
    {
        if ($usa->outPut5V() === "120V") {
            printf("可以在美国使用中国的电源插头给电脑充电了");
        } else {
            printf("不可以在美国使用中国的电源插头给电脑充电了");
        }
    }}class Client{
    public function __construct()
    {
        $adapter = new Adapter();
        $computer = new Computer();

        $computer->index($adapter);
    }}

2. 객체 어댑터 모드

UsaInterface,一个适配器类Adapter,一个中国电压的接口Chine,一个使用者Computer
在这里,中国电压就是被适配者,美国电压是最后的输出(目标),就是是配置者

class Adapter implements UsaInterface{
    protected $china;

    public function __construct(China $china)
    {
        $this->china = $china;
    }


    public function outPut5V()
    {
        // TODO: Implement outPut5V() method.
        $chinaVoltage = $this->china->outPut220V();

        return $chinaVoltage / 2 + 10 . "V";
    }}

二、对象适配器模式

对象适配器其实就是在类适配器的模式上做了一个调整,让适配器类Adapter
객체 어댑터는 실제로 클래스 어댑터를 기반으로 한 모델입니다. 어댑터 클래스 Adapter는 어댑터의 클래스를 상속하지 않고 함께 결합합니다. 이렇게 하면 사용 유연성이 향상되고 어댑터가 노출되지 않습니다(상속 관계 대신 연관 관계 사용). [합성 재사용 원리]). 동시에 상속 없이는 부모 클래스의 메서드 재작성을 재정의할 수 있는 방법이 없으며 이는 좋은 점과 나쁜 점으로 간주될 수 있습니다. 다음과 같습니다:

rrreee

3. 인터페이스 어댑터(기본 어댑터 모드)

인터페이스에서 제공하는 모든 메소드를 구현할 필요가 없는 경우 먼저 추상 클래스를 설계하여 인터페이스를 구현하고 기본 비어 있는 메소드를 제공할 수 있습니다. 그런 다음 추상 클래스의 하위 메서드를 변경하여 요구 사항을 충족하기 위해 상위 클래스의 특정 메서드를 선택적으로 재정의할 수 있습니다(인터페이스가 모든 메서드를 사용하지 않으려는 상황에 적용 가능)

관련 학습 권장사항:

PHP 프로그래밍 초급부터 고급까지

위 내용은 PHP 디자인 패턴 중 어댑터 패턴을 살펴보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제