PHP设计模式:php工厂模式的介绍(附代码)

不言
Lepaskan: 2023-04-03 15:54:01
asal
1792 orang telah melayarinya

本篇文章给大家带来的内容是关于PHP设计模式:php工厂模式的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

工厂模式是一种隐藏类的实例化细节,并且对一系列类使用相同的实例化方式,可以很方便的扩展更多的实现同一个接口的类的创建对象的方式。
示例应用场景有:
1)在线支付
支付有多种方式,比如微信支付,支付宝支付,银联支付等,根据用户的选择而采用相应的支付方式;
2)访问量统计
在一个业务较复杂的项目中,用户对不同的对象进行访问,比如访问文章、访问作者、访问文章目录等,同样是访问记录,记录的信息却不一样

工厂模式的原理:
先根据多个对象的相同行为设计一个接口,再让这几个类去实现这个接口,接着制造一个实例化工厂,即可在工厂中根据不同参数实例化不同类。

工厂模式的具体实现:

/* * 形状接口 */interface Shape{ public function area();}/* * 长方形类,实现了形状接口 */class Rectangle implements Shape{ private $long; private $width; function __construct($long,$width) { $this->long = $long; $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return $this->long * $this->width; } }/* * 正方形类,实现了形状接口 */class Square implements Shape{ private $width; function __construct($width) { $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pow($this->width,2); } }/* * 圆形类,实现了形状接口 */class Circle implements Shape{ private $radiu; function __construct($radiu) { $this->radiu = $radiu; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pi()*pow($this->radiu,2); } }class ShapeFactory{ /* * 获取实例化的形状对象 * ...$args 表示接受不限个数的参数 */ public function getShpae(...$args) { /* * 第一个参数为形状名,后面的参数为形状的尺寸 */ switch($args[0]) { case 'Rectangle': return new Rectangle($args[1],$args[2]); break; case 'Square': return new Square($args[1]); break; case 'Circle': return new Circle($args[1]); break; } return null; } }$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area(); print_r($area);/* Array ( [0] => 6 [1] => 4 [2] => 12.566370614359 ) */
Salin selepas log masuk

相关文章推荐:

php如何获取文件一级目录(纯代码)

php如何利用经度和纬度来计算两点之间的距离(纯代码)

Atas ialah kandungan terperinci PHP设计模式:php工厂模式的介绍(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Artikel terbaru oleh pengarang
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!