• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解PHP之简单工厂模式

php 搞代码 3年前 (2022-01-22) 10次浏览 已收录 0个评论

本文主要为大家分享一篇详解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 {	@Override	public void operation(String s) {		// 实现的功能		System.out.println("ImplA s==" + s);	}}

ImplB:

/** * 接口的具体实现对象B *  * @author Administrator * */public class ImplB implements Api {	@Override	public 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。

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

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

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

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

简单工厂的优点:

  1. 帮助封装

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

2. 解耦

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

简单工厂的缺点:

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

2.不方便扩展子工厂

简单工厂的本质:选本文来源gaodai#ma#com搞@@代~&码*网/搞gaodaima代码择实现


何时选择简单工厂:

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

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解PHP之简单工厂模式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址