首頁 後端開發 php教程 一起看看PHP設計模式之轉接器模式

一起看看PHP設計模式之轉接器模式

Jun 30, 2020 pm 05:42 PM
php 適配器

一起看看PHP設計模式之轉接器模式

PHP設計模式之適配器模式

  1. #生活場景問題引入:

假如需要去國外旅遊,遊玩,現在電子產品很豐富,但是每個電子產品都是需要電源來做驅動,手機,電腦,相機。 。 。但是又有一個很顯示的問題,電子產品是
很消耗電量的,電量沒有了,就需要充電,在我們國家,我們買的電子產品出場帶的電源充電器,通常都是220V的電壓,但是世界很大,每個國家的要求(規定)
又是不同的,例如美國就是120V

  1. 原理:
##將一個類別的接口轉換為另外一種接口,讓原本接口不相容的類別可以相容。

使用者呼叫適配器轉換出來的目標介面方法,適配器再去呼叫被適配器相關的介面方法

    好處:
使用者是看不到被轉接者,屬於解耦的操作

  1. 適配器模式屬於結構型的設計模式

  2. 適配器模式的三種實作方式

一、 類別適配器

#根據上面的UML圖,我們可以看出,需要一個美國電壓的介面

UsaInterface,一個適配器類別Adapter,一個中國電壓的介面Chine,一個使用者Computer
在這裡,中國電壓就是被適配器,美國電壓是最後的輸出(目標),就是是配置者

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);
    }}
登入後複製

二、物件適配器模式

# #物件適配器其實就是在類別適配器的模式上做了一個調整,讓適配器類別

Adapter不去繼承被適配器的類,而是讓它們組合在一起,這樣就可以增加了使用的靈活度,也不會暴露被適配者的很多方法(使用關聯關係來代替繼承關係【合成復用原則】)。同時,沒有繼承就沒有辦法去覆蓋父類別的方法重寫了,也算是有好有壞吧。如下:

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";
    }}
登入後複製

三、介面適配器(預設適配器模式)

當不需要全部實作介面提供的方法時,可以先設計一個抽象類別實作接口,並為介面提供預設的空方法實現,那麼改抽象類別的子方法就可以有選擇的覆蓋父類別的某

些方法來實現需求,(適用於一個介面不想使用所有的方法的情況)

相關學習推薦:

PHP程式設計從入門到精通

以上是一起看看PHP設計模式之轉接器模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles