科技知识动态:详解PHP之简单工厂模式

导读跟大家讲解下有关详解PHP之简单工厂模式,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说详解PHP之简单工厂模式,小编也收集

跟大家讲解下有关详解PHP之简单工厂模式,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说详解PHP之简单工厂模式,小编也收集到了有关详解PHP之简单工厂模式的相关资料,希望大家看到了会喜欢。

本文主要为大家分享一篇详解PHP之简单工厂模式 ,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

1.简单工厂的定义

提供一个创建对象实例的功能,而无需关系其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。

2.简单工厂的结构和说明

简单工厂的结构如下图:

Api: 定义客户所需要的功能接口

Impl: 具体实现Api的实现类,可能会有多个

Factory: 工厂,选择合适的实现类来创建Api接口对象

Client: 客户端,通过Factory 来获取Api接口对象,然后面向Api接口编程

Api接口:

/** * 接口的定义,该接口可以通过简单工厂来创建 * * @author Administrator * */public interface Api {/** * 具体功能方法的定义 * * @param s * 需要的参数 */public void operation(String s);}

ImplA:

/** * 接口的具体实现对象A * * @author Administrator * */public class ImplA implements Api {@Overridepublic void operation(String s) {// 实现的功能System.out.println("ImplA s==" + s);}}

ImplB:

/** * 接口的具体实现对象B * * @author Administrator * */public class ImplB implements Api {@Overridepublic void operation(String s) {// 实现的功能System.out.println("ImplB s==" + s);}}

Factory:

/** * 工厂类,用来创建Api对象 * * @author Administrator * */public class Factory {/** * 具体创建Api对象的方法 * * @param condition * 从外部传入的选择条件 * @return */public static Api createApi(int condition) {// 应该根据某些条件去选择究竟创建哪一个具体的实现对象// 这些条件可以从外部传入,也可以从其他途径获取// 如果只有一个实现,可以省略条件Api api = null;if (condition == 1) {api = new ImplA();} else if (condition == 2) {api = new ImplB();}return api;}}

测试类Client:

public class Client {public static void main(String[] args) {// 通过简单工厂来获取接口对象Api api = Factory.createApi(1);api.operation("正在使用简单工厂模式");}}

简单工厂的调用顺序示意图:

简单工厂的命名建议:

类命名建议为“模块名称+Factory”,比如,用户模块的工厂就称为UserFactory

方法名称通常为“get+接口名称”或者是“create+接口名称”。比如用户接口名称为UserEbi,那么方法名称通常为getUserEbi或者createUserEbi。

简单工厂方法的内部主要实现的功能是“选择合适的实现类”,选择条件或者是参数的来源通常为一下集中:

来源于客户端,由Client来传入参数

来源于配置文件,从配置文件获取用于判断的值

来源于程序运行期的某个值,比如从缓存中获取某个运行期的值

简单工厂的优点:

帮助封装

简单工厂虽然简单,但是非常友好地帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。

2. 解耦

通过简单工厂,实现了客户端和具体实现类的解耦。

简单工厂的缺点:

1. 可能增加客户端的复杂度

2.不方便扩展子工厂

简单工厂的本质:选择实现

何时选择简单工厂:

如果想完全封装隔离具体实现,让外部只能通过接口来操作封装体,那么可以选择简单工厂,让客户端通过工厂来获取相应的接口,而无须关心具体的实现。

如果想要把对外创建对象的职责集中管理和控制,可以选择简单工厂。

以上就是详解PHP之简单工厂模式的详细内容,更多请关注php中文网其它相关文章!

来源:php中文网

免责声明:本文由用户上传,如有侵权请联系删除!