简介:
简单工厂模式(Simple Factory)提供一个创建对象实例的功能,而无需关系其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。
适用场景:
如果想完全封装隔离具体实现,让外部只能通过接口来操作封装体,那么可以选择简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实现。
如果想要把对外创建对象的职责集中管理和控制,可以选择简单工厂。
优缺点:
优点:
帮助封装:简单工厂虽然简单,但是非常友好地帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。
解耦:通过简单工厂,实现了客户端和具体实现类的解耦。
缺点:
可能增加客户端的复杂度
不方便扩展子工厂
类图:
实现:
IShape.php (接口,限定子类实现方法)
1 |
|
Circle.php(具体实现类(圆形))
1 |
|
Square.php(具体实现类(正方形))
1 |
|
Factory.php(简单工厂类)
1 |
|
客户端调用:
1 |
|
思考:
现在又要加一个画长方形的新需求该怎么办?