首页 > 编程 > PHP > 正文

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

2020-03-22 19:06:42
字体:
来源:转载
供稿:网友

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

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

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

工厂模式的具体实现:

/* * 形状接口 */interface Shape{ html' target='_blank'>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*/

相关文章推荐:

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

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

以上就是PHP设计模式:php工厂模式的介绍(附代码)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表