php 工厂模式和策略模式区别
工厂是创建型模式,它的作用就是创建对象;
策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;
关注点不一样
一个关注对象创建
一个关注行为的封装(推荐学习:PHP视频教程)
解决不同的问题
工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。
策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。
工厂相当于黑盒子,策略相当于白盒子;
实例:
<?php header('content-type:text/html;charset=utf-8'); abstract class Product { abstract public function getName(); } class ProductA extends Product { public function getName() { echo '这是A商品<br>'; } } class ProductB extends Product { public function getName() { echo '这是B商品<br>'; } } //工厂模式 class ProductFactory { public static function create($num) { switch($num) { case 1: return new ProductA(); case 2: return new ProductB(); } return null; } } //传递不同的参数获取不同的对象 $obj=ProductFactory::create(1); $obj->getName(); //这是A商品 $obj=ProductFactory::create(2); $obj->getName(); //这是B商品 //=======策略模式 <?php header('content-type:text/html;charset=utf-8'); interface IStrategy { function ontheway(); } class Walk implements IStrategy { public function ontheway() { echo '走着去<br>'; } } class Bick implements IStrategy { public function ontheway() { echo '骑自行车去<br>'; } } class Bus implements IStrategy { public function ontheway() { echo '坐巴士去<br>'; } } //策略模式,传递不同的参数,调用不同的策略 class Strategy{ public function getWay(IStrategy $obj) { $obj->ontheway(); } } $obj=new Strategy(); $obj->getWay(new Walk); //走着去 $obj->getWay(new Bick); //骑自行车去 $obj->getWay(new Bus); //坐巴士去
更多PHP相关技术文章,请访问PHP图文教程栏目进行学习!
Atas ialah kandungan terperinci php 工厂模式和策略模式区别. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

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

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
