Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan terbaik untuk corak reka bentuk kilang dalam program PHP

Amalan terbaik untuk corak reka bentuk kilang dalam program PHP

王林
王林asal
2023-06-07 08:40:221783semak imbas

Amalan Terbaik Corak Reka Bentuk Kilang dalam Program PHP

Dalam pengaturcaraan berorientasikan objek (OOP), corak reka bentuk kilang ialah corak reka bentuk yang sangat biasa, yang mencipta contoh objek melalui kelas kilang kesan penyahgandingan dan penggunaan semula. Dalam pembangunan program PHP, corak reka bentuk kilang juga digunakan secara meluas dalam penciptaan contoh objek.

Corak reka bentuk kilang dalam PHP biasanya dibahagikan kepada tiga jenis: kilang mudah, kaedah kilang dan kilang abstrak. Artikel ini akan menumpukan pada memperkenalkan tiga jenis senario aplikasi dan amalan terbaik ini untuk membantu pembaca memahami dan menggunakan corak reka bentuk kilang dengan lebih baik.

  1. Corak Kilang Mudah

Corak Kilang Mudah ialah corak kilang yang paling asas Ia terdiri daripada kelas kilang yang bertanggungjawab untuk mencipta semua kejadian objek mengikut jenis parameter yang diluluskan masuk untuk mencipta objek yang sepadan. Kelebihan model ini ialah ia mudah untuk dilaksanakan, tidak memerlukan penciptaan pelbagai kelas kilang, dan tidak memerlukan logik pertimbangan yang kompleks. Tetapi ia juga mempunyai kekurangan Apabila jenis objek baru perlu ditambah, kod kelas kilang perlu diubah suai, yang tidak mematuhi "prinsip pembukaan dan penutupan".

Dalam pelaksanaan PHP, anda boleh mencipta kelas kilang, menerima parameter sebagai jenis objek, kemudian menentukan jenis objek yang perlu dibuat dan mengembalikan objek contoh yang sepadan. Berikut ialah contoh mudah:

class SimpleFactory
{
    public static function createObject($type)
    {
        switch($type) {
            case 'TypeA':
                return new ObjectA();
            case 'TypeB':
                return new ObjectB();
            default:
                throw new Exception('unsupported type');
        }
    }
}

Dalam kod di atas, fungsi statik createObject dalam kelas kilang SimpleFactory menerima parameter dan mencipta contoh objek yang sepadan berdasarkan nilai parameter. Apabila mencipta objek, anda boleh menggunakan TypeA atau TypeB sebagai nilai parameter.

  1. Corak kaedah kilang

Corak kaedah kilang ialah penambahbaikan pada corak kilang mudah Ia menyerahkan kerja mencipta objek kepada setiap subkelas yang ada kelas kilang yang sepadan. Kelebihan model ini ialah penciptaan setiap jenis objek dipisahkan daripada penciptaan kelas kilang, mengikut "prinsip tanggungjawab tunggal", dan kebolehskalaannya juga sangat baik. Tetapi ia juga mempunyai kelemahan Apabila pelbagai jenis objek perlu dibuat, sebilangan besar kelas kilang perlu ditulis.

Dalam pelaksanaan PHP, anda boleh mencipta kelas kilang abstrak untuk mentakrifkan antara muka untuk mencipta tika objek, dan kemudian setiap kelas kilang konkrit melaksanakan antara muka ini. Berikut ialah contoh:

// 抽象工厂类
abstract class AbstractFactory
{
    abstract public function createObject();
}

// 具体工厂类1
class ConcreteFactory1 extends AbstractFactory
{
    public function createObject()
    {
        return new ObjectA();
    }
}

// 具体工厂类2
class ConcreteFactory2 extends AbstractFactory
{
    public function createObject()
    {
        return new ObjectB();
    }
}

Dalam kod di atas, kelas kilang abstrak AbstractFactory mentakrifkan antara muka untuk mencipta kejadian objek, dan operasi penciptaan khusus dilaksanakan oleh setiap kelas kilang konkrit. ConcreteFactory1 dan ConcreteFactory2 ialah kelas kilang khusus yang digunakan untuk mencipta objek ObjectA dan ObjectB masing-masing.

  1. Corak Kilang Abstrak

Corak Kilang Abstrak ialah penambahbaikan pada Corak Kaedah Kilang Ia seterusnya mengabstrak dan mengabstrakkan hubungan antara kilang dan objek yang dibenarkan anda untuk mencipta struktur objek yang lebih kompleks. Kelebihan corak kilang abstrak ialah ia boleh mengasingkan penjanaan kelas tertentu, membolehkan pengguna hanya mengambil berat tentang antara muka objek tanpa mengambil berat tentang proses penciptaan objek. Tetapi kelemahannya ialah ia mempunyai skalabiliti yang lemah. Menambah fungsi baharu memerlukan pengubahsuaian antara muka dan semua kelas pelaksanaan.

Dalam pelaksanaan PHP, anda boleh mencipta kelas kilang abstrak untuk mentakrifkan antara muka untuk mencipta tika objek, dan kemudian setiap kelas kilang konkrit melaksanakan antara muka ini. Berikut ialah contoh:

// 抽象工厂类
abstract class AbstractFactory
{
    abstract public function createProductA();
    abstract public function createProductB();
}

// 具体工厂类1
class ConcreteFactory1 extends AbstractFactory
{
    public function createProductA()
    {
        return new ProductA1();
    }

    public function createProductB()
    {
        return new ProductB1();
    }
}

// 具体工厂类2
class ConcreteFactory2 extends AbstractFactory
{
    public function createProductA()
    {
        return new ProductA2();
    }

    public function createProductB()
    {
        return new ProductB2();
    }
}

Dalam kod di atas, kelas kilang abstrak AbstractFactory mentakrifkan antara muka untuk mencipta keseluruhan struktur produk, dan pelaksanaan khusus dilaksanakan oleh setiap kelas kilang tertentu. ConcreteFactory1 dan ConcreteFactory2 ialah kelas kilang khusus yang digunakan untuk mencipta jenis ProductA dan ProductB masing-masing.

Kesimpulan

Corak reka bentuk kilang ialah corak reka bentuk yang biasa digunakan dalam pembangunan program PHP Ia boleh merealisasikan penciptaan dan pengurusan objek dengan mudah, dan juga boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. seks. Dalam aplikasi praktikal, jenis kilang yang sesuai boleh dipilih mengikut senario dan keperluan tertentu. Corak kilang ringkas sesuai untuk mencipta jenis objek tunggal, manakala kaedah kilang dan corak kilang abstrak sesuai untuk mencipta pelbagai jenis objek.

Atas ialah kandungan terperinci Amalan terbaik untuk corak reka bentuk kilang dalam program PHP. 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