Rumah pembangunan bahagian belakang tutorial php Cara mencipta contoh objek yang boleh diuji menggunakan corak kilang mudah berorientasikan objek PHP

Cara mencipta contoh objek yang boleh diuji menggunakan corak kilang mudah berorientasikan objek PHP

Sep 05, 2023 pm 02:45 PM
php berorientasikan objek contoh objek Corak kilang yang ringkas boleh diuji

Cara mencipta contoh objek yang boleh diuji menggunakan corak kilang mudah berorientasikan objek PHP

Cara menggunakan corak kilang mudah berorientasikan objek PHP untuk mencipta contoh objek yang boleh diuji

Corak kilang ringkas ialah corak reka bentuk perisian yang biasa digunakan . Ia membantu kami mencipta contoh objek yang berbeza berdasarkan keadaan yang berbeza. Dalam pengaturcaraan berorientasikan objek PHP, menggabungkan corak kilang mudah boleh meningkatkan kebolehujian dan kebolehselenggaraan kod.

Dalam artikel ini, kita akan belajar cara mencipta contoh objek yang boleh diuji menggunakan corak kilang mudah berorientasikan objek PHP. Kami akan menggambarkan proses ini dengan contoh mudah.

Pertama, mari kita tentukan antara muka untuk mewakili gelagat biasa objek yang ingin kita cipta. Katakan kita mempunyai antara muka bernama Animal, yang mengandungi kaedah bunyi: Animal的接口,其中包含一个sound方法:

interface Animal
{
    public function sound();
}
Salin selepas log masuk

接下来,我们来实现一些具体的动物类,比如CatDog。这些类都实现了Animal接口,并实现了自己的sound方法:

class Cat implements Animal
{
    public function sound()
    {
        return "Meow";
    }
}

class Dog implements Animal
{
    public function sound()
    {
        return "Woof";
    }
}
Salin selepas log masuk

现在,我们来创建一个简单工厂类AnimalFactory,它根据输入参数来创建不同的动物对象实例。这个工厂类只有一个静态方法createAnimal

class AnimalFactory
{
    public static function createAnimal($animalType)
    {
        switch ($animalType) {
            case 'cat':
                return new Cat();
            case 'dog':
                return new Dog();
            default:
                throw new Exception("Unsupported animal type");
        }
    }
}
Salin selepas log masuk

现在,我们可以使用这个简单工厂类来创建不同类型的动物对象实例了。比如,我们可以这样来创建一个猫的实例:

$animal = AnimalFactory::createAnimal('cat');
echo $animal->sound(); // 输出 "Meow"
Salin selepas log masuk

同样地,如果我们想要创建一只狗的实例,只需要将参数改为'dog'

$animal = AnimalFactory::createAnimal('dog');
echo $animal->sound(); // 输出 "Woof"
Salin selepas log masuk

使用简单工厂模式的好处之一是我们可以轻松地替换或添加新的对象类型,而不需要修改客户端的代码。例如,如果我们想要添加一个新的动物类Bird,只需要在工厂类中添加相应的case语句即可。

使用面向对象简单工厂模式的一个重要的优势是它可以提高代码的可测试性。由于代码中的依赖关系被封装在工厂类中,我们可以通过使用模拟对象或桩对象来替代我们的动物类,从而方便地进行单元测试。

让我们来看一个使用单元测试框架PHPUnit进行测试的例子:

class AnimalFactoryTest extends PHPUnitFrameworkTestCase
{
    public function testCreateAnimal()
    {
        $animal = AnimalFactory::createAnimal('cat');
        $this->assertInstanceOf(Cat::class, $animal);
        $this->assertEquals("Meow", $animal->sound());
    }
}
Salin selepas log masuk

通过上述测试,我们可以验证AnimalFactory类是否成功地创建了一个Cat对象实例,并且该实例的soundrrreee

Seterusnya, mari kita laksanakan beberapa kelas haiwan tertentu, seperti Kucing dan Anjing. Semua kelas ini melaksanakan antara muka Haiwan dan melaksanakan kaedah bunyi mereka sendiri:

rrreee

Sekarang, mari buat kelas kilang ringkas AnimalFactory, yang mencipta contoh objek haiwan yang berbeza berdasarkan parameter input. Kelas kilang ini hanya mempunyai satu kaedah statik createAnimal: #🎜🎜#rrreee#🎜🎜#Kini, kita boleh menggunakan kelas kilang mudah ini untuk mencipta jenis contoh objek haiwan yang berbeza. Sebagai contoh, kita boleh mencipta instance kucing seperti ini: #🎜🎜#rrreee#🎜🎜#Begitu juga, jika kita ingin mencipta instance anjing, kita hanya perlu menukar parameter kepada 'dog' :#🎜🎜#rrreee#🎜🎜#Salah satu faedah menggunakan corak kilang yang ringkas ialah kita boleh menggantikan atau menambah jenis objek baharu dengan mudah tanpa mengubah kod pelanggan. Sebagai contoh, jika kami ingin menambah kelas haiwan baharu Burung, kami hanya perlu menambah pernyataan case yang sepadan dalam kelas kilang. #🎜🎜##🎜🎜#Kelebihan penting menggunakan corak kilang ringkas berorientasikan objek ialah ia boleh meningkatkan kebolehujian kod. Memandangkan kebergantungan dalam kod itu terkandung dalam kelas kilang, kami boleh melakukan ujian unit dengan mudah dengan menggunakan objek olok-olok atau objek rintisan sebagai ganti kelas haiwan kami. #🎜🎜##🎜🎜#Mari kita lihat contoh ujian menggunakan rangka kerja ujian unit PHPUnit: #🎜🎜#rrreee#🎜🎜#Melalui ujian di atas, kita boleh mengesahkan sama ada AnimalFactory kelas berjaya Contoh objek Cat dicipta dengan betul dan sama ada kaedah bunyi bagi contoh itu mengembalikan hasil yang betul. #🎜🎜##🎜🎜#Ringkasnya, corak kilang mudah berorientasikan objek PHP boleh membantu kami mencipta contoh objek berbeza mengikut keadaan berbeza dan meningkatkan kebolehujian dan kebolehselenggaraan kod. Dengan merangkum proses penciptaan objek dalam kelas kilang, kami boleh menggantikan atau menambah jenis objek baharu dengan mudah dan melaksanakan ujian unit dengan mudah. Ia sememangnya corak reka bentuk penting yang boleh meningkatkan kualiti kod. #🎜🎜#

Atas ialah kandungan terperinci Cara mencipta contoh objek yang boleh diuji menggunakan corak kilang mudah berorientasikan objek PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini 7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini Nov 13, 2024 am 09:42 AM

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

See all articles