本篇文章给大家带来的内容是关于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
)
*/相关文章推荐:
立即学习“PHP免费学习笔记(深入)”;
以上就是PHP设计模式:php工厂模式的介绍(附代码)的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号