加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_镇江站长网 (https://www.0511zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

01-工厂(Factory Method)模式PHP实现

发布时间:2022-09-20 12:55:14 所属栏目:PHP教程 来源:
导读:  摘要:本文用一个实例场景描述Gof 23设计模式中的工厂(FactoryMethod)模式,并用PHP程序代码给予实现。

  关键字:Gof 23 设计模式 工厂模式 PHP

  Factory Method Patternbased on PHP

  R
  摘要:本文用一个实例场景描述Gof 23设计模式中的工厂(FactoryMethod)模式,并用PHP程序代码给予实现。
 
  关键字:Gof 23 设计模式 工厂模式 PHP
 
  Factory Method Patternbased on PHP
 
  REN gang
 
  Abstract:In this paper, we use an example to describe thefactory (Method Factory) mode in Gof 23 design mode, and use PHP program codeto achieve.
 
  Key word: Gof 23, DesignPatterns, Factory Method Pattern, PHP
 
  1 标准定义
 
  工厂(Factory Method)模式标准定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod 使一个类的实例化延迟到其子类。
 
  2 分析和说明
 
  工厂(Factory Method)模式是一个创建性的模式。它要求工厂类和产品类分开。由一个工厂类可以根据传入的参量决定创建出哪一种产品类的实例,但这些不同的实例有共同的父类。Factory Method把创建这些实例的具体过程封装起来了。当一个类无法预料将要创建哪种类的对象或是一个类需要由子类来指定创建的对象时,我们就需要用到Factory Method模式了。
 
  工厂(Factory Method)模式结构如图1所示说明。工厂模式涉及到抽象工厂角色、具体工厂角色、抽象产品角色以及具体产品角色等。
 
  php面向对象实例教程_php函数实例教程_php面向对象实例教程
 
  抽象工厂(Creator)角色:任何在模式中创建对象的工厂类必须实现这个接口。在实际的系统中,这个角色也常常使用抽象类或接口实现。
 
  具体工厂(Concrete Creator)角色:担任这个角色的是实现了抽象工厂接口的具体类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。在实际的系统中这个角色使用具体类实现。
 
  抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在实际的系统中,这个角色也常常使用抽象类或者接口来实现。
 
  具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。这个角色使用具体类来实现。
 
  3 应用场景举例
 
  比如某一类公司能提供一种产品,但是这种产品有不同的型号。当客户需要一种产品,但是没有具体是哪一种型号,只是提供了一些产品参数,公司就根据这些参数来提供产品。这就是工厂模式。其类结构如图所示。
 
  4.PHP的程序实现代码
 
  PHP程序实现主要包括Company类,Product接口, ProductA和ProductB类等5个类。其关系如图2所示。下面分别列出这此文件的程序代码,最后列出测试代码并显示输出结果。
 
  程序代码清单01
 
  工厂模式测试类输出结果如下所示:
 
  factorymethod设计模式(对象方式).
 
  ——————程序开始运行.————————
 
  这是ProductA实现的功能
 
  这是ProductB实现的功能
 

(编辑:应用网_镇江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!