欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 简单工厂模式

简单工厂模式

2024/10/23 15:28:42 来源:https://blog.csdn.net/qq_43287763/article/details/143000624  浏览:    关键词:简单工厂模式

现实生活中的例子

        想象一下,你在建造一座房子,需要安装门。你可以选择穿上木匠的衣服,带上木头、胶水、钉子以及制作门所需的所有工具,然后在你的房子里开始制作门;或者,你可以简单地给工厂打个电话,让他们把已经做好的门送过来,这样你就无需学习如何制作门,也无需处理制作过程中产生的杂乱无章的局面。

用简单的话来说

        简单工厂模式就是为客户生成一个实例,而不需要向客户暴露任何实例化逻辑。

维基百科的说法

        在面向对象编程(OOP)中,工厂是一个用于创建其他对象的对象——正式地说,工厂是一个函数或方法,它通过某种方法调用返回具有不同原型或类的对象,这些对象通常被假定为是“新”创建的。

程序示例

首先,我们有一个门的接口和它的实现

interface Door
{public function getWidth(): float;public function getHeight(): float;
}class WoodenDoor implements Door
{protected $width;protected $height;public function __construct(float $width, float $height){$this->width = $width;$this->height = $height;}public function getWidth(): float{return $this->width;}public function getHeight(): float{return $this->height;}
} 

然后,我们有一个门工厂,它制造门并返回门对象

class DoorFactory
{public static function makeDoor($width, $height): Door{return new WoodenDoor($width, $height);}
}

它的使用方法如下

// Make me a door of 100x200
$door = DoorFactory::makeDoor(100, 200);echo 'Width: ' . $door->getWidth();
echo 'Height: ' . $door->getHeight();// Make me a door of 50x100
$door2 = DoorFactory::makeDoor(50, 100);

何时使用?

        当创建一个对象不仅仅是几个赋值操作,而是涉及到一些逻辑时,将这些逻辑放在一个专门的工厂类中,而不是在每个地方重复相同的代码,是有意义的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com