Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Corak reka bentuk struktur data PHP berorientasikan objek

Corak reka bentuk struktur data PHP berorientasikan objek

WBOY
WBOYasal
2024-05-08 08:57:02542semak imbas

Dalam OOP PHP, terdapat corak reka bentuk struktur data berikut: mod tatasusunan: mewakili jujukan unsur tersusun mod senarai terpaut: mewakili jujukan unsur tersusun yang boleh berkembang: mewakili jujukan yang terakhir masuk dahulu; elemen; mod baris gilir: mewakili jujukan masuk dahulu Keluarkan jujukan elemen mod pokok: mewakili struktur hierarki: mewakili struktur dengan nod dan sempadan.

面向对象的 PHP 数据结构设计模式

Corak Reka Bentuk Struktur Data PHP Berorientasikan Objek

Pengenalan

Dalam pengaturcaraan berorientasikan objek (OOP), corak reka bentuk menyediakan penyelesaian yang boleh digunakan semula dan boleh diselenggara kepada masalah biasa Pengaturcaraan. Artikel ini akan meneroka beberapa corak reka bentuk struktur data yang biasa digunakan dalam OOP PHP dan kes praktikalnya.

Corak Tatasusunan

Corak tatasusunan ialah corak reka bentuk ringkas yang digunakan untuk mewakili satu siri elemen tersusun secara berurutan. Dalam PHP, anda boleh mencipta tatasusunan menggunakan fungsi terbina dalam array. array 內建函數來創建陣列。

// 創建一個陣列
$my_array = ['apple', 'banana', 'cherry'];

// 訪問陣列元素
echo $my_array[0]; // 會輸出 "apple"

連結串列模式

連結串列模式用於表示一系列順序排列且可以增長或縮小的元素。在 PHP 中,可以使用 LinkedList 類或 SplDoublyLinkedList 類來實現連結串列。

// 使用 LinkedList 類創建連結串列
$my_list = new LinkedList();
$my_list->add('apple');
$my_list->add('banana');

// 訪問連結串列元素
echo $my_list->get(0); // 會輸出 "apple"

堆疊模式

堆疊模式用於表示一系列後進先出 (LIFO) 的元素。在 PHP 中,可以使用 SplStack 類來實現堆疊。

// 創建一個堆疊
$my_stack = new SplStack();
$my_stack->push('apple');
$my_stack->push('banana');

// 從堆疊中彈出元素
echo $my_stack->pop(); // 會輸出 "banana"

佇列模式

佇列模式用於表示一系列先進先出 (FIFO) 的元素。在 PHP 中,可以使用 SplQueue

// 創建一個佇列
$my_queue = new SplQueue();
$my_queue->enqueue('apple');
$my_queue->enqueue('banana');

// 從佇列中出列元素
echo $my_queue->dequeue(); // 會輸出 "apple"

Mod siri bercantum

Mod siri bercantum digunakan untuk mewakili satu siri elemen yang disusun mengikut tertib dan boleh membesar atau mengecut. Dalam PHP, anda boleh menggunakan kelas LinkedList atau kelas SplDoublyLinkedList untuk melaksanakan senarai pautan.

// 使用巢狀陣列表示樹狀結構
$my_tree = [
    'apple' => [
        'red_apple',
        'green_apple'
    ],
    'banana' => [
        'yellow_banana',
        'green_banana'
    ]
];

// 使用物件表示樹狀結構
class Node {
    public $value;
    public $children = [];

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

    public function addChild($node) {
        $this->children[] = $node;
    }
}

// 使用物件建立樹狀結構
$my_tree = new Node('fruits');
$my_tree->addChild(new Node('apple'));
$my_tree->addChild(new Node('banana'));

Mod susun

Mod tindanan digunakan untuk mewakili satu siri elemen lepas masuk dahulu (LIFO). Dalam PHP, tindanan boleh dilaksanakan menggunakan kelas SplStack.

// 使用陣列表示圖形
$my_graph = [
    'A' => ['B', 'C'],
    'B' => ['D', 'E'],
    'C' => ['F'],
    'D' => [],
    'E' => [],
    'F' => []
];

// 使用物件表示圖形
class Vertex {
    public $value;
    public $edges = [];

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

    public function addEdge($vertex) {
        $this->edges[] = $vertex;
    }
}

// 使用物件建立圖形
$my_graph = new Vertex('A');
$my_graph->addEdge(new Vertex('B'));
$my_graph->addEdge(new Vertex('C'));

🎜Mod giliran🎜🎜🎜Mod giliran digunakan untuk mewakili satu siri elemen masuk dahulu, keluar dahulu (FIFO). Dalam PHP, anda boleh menggunakan kelas SplQueue untuk melaksanakan baris gilir. 🎜rrreee🎜🎜Mod pokok🎜🎜🎜Mod pokok digunakan untuk mewakili data dengan struktur hierarki. Dalam PHP, anda boleh menggunakan tatasusunan bersarang atau objek untuk melaksanakan struktur pokok. 🎜rrreee🎜🎜Mod Graf🎜🎜🎜Mod graf digunakan untuk mewakili struktur graf dengan nod dan tepi. Dalam PHP, grafik boleh dilaksanakan menggunakan tatasusunan atau objek. 🎜rreeee

Atas ialah kandungan terperinci Corak reka bentuk struktur data PHP berorientasikan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn