工厂模式在规模较小的环境中似乎有些大材小用。不过,最好还是学习这种扎实的编码形式,以便应用于任意规模的项目中
。
最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合。要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程。在更改一个代码片段时,就会发生问题,系统其他部分 —— 您曾认为完全不相关的部分中也有可能出现级联破坏。
该问题在于紧密耦合 。系统某个部分中的函数和类严重依赖于系统的其他部分中函数和类的行为和结构。您需要一组模式,使这些类能够相互通信,但不希望将它们紧密绑定在一起,以避免出现联锁。
在大型系统中,许多代码依赖于少数几个关键类。需要更改这些类时,可能会出现困难。例如,假设您有一个从文件读取的 User 类。您希望将其更改为从数据库读取的其他类,但是,所有的代码都引用从文件读取的原始类。这时候,使用工厂模式会很方便。
工厂模式 是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。
清单 1 显示工厂类的一个示列。等式的服务器端包括两个部分:数据库和一组 PHP 页面,这些页面允许您添加反馈、请求反馈列表并获取与特定反馈相关的文章。
<?php
interface IUser
{
function getName();
}
class User implements IUser
{
public function __construct( $id ) { }
public function getName()
{
return "Jack";
}
}
class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}
$uo = UserFactory::Create( 1 );
echo( $uo->getName()."\n" );
?>
IUser 接口定义用户对象应执行什么操作。IUser 的实现称为 User,UserFactory 工厂类则创建 IUser 对象。此关系可以用图 1 中的 UML 表示。
图 1. 工厂类及其相关 IUser 接口和用户类
如果您使用 php 解释器在命令行上运行此代码,将得到如下结果:
% php factory1.php
Jack
%
测试代码会向工厂请求 User 对象,并输出 getName 方法的结果。
有一种工厂模式的变体使用工厂方法。类中的这些公共静态方法构造该类型的对象。如果创建此类型的对象非常重要,此方法非常有用。例如,假设您需要先创建对象,然后设置许多属性。此版本的工厂模式会将该进程封装在单个位置中,这样,不用复制复杂的初始化代码,也不必将复制好的代码在在代码库中到处粘贴。
清单 2 显示使用工厂方法的一个示例。
<?php
interface IUser
{
function getName();
}
class User implements IUser
{
public static function Load( $id )
{
return new User( $id );
}
public static function Create( )
{
return new User( null );
}
public function __construct( $id ) { }
public function getName()
{
return "Jack";
}
}
$uo = User::Load( 1 );
echo( $uo->getName()."\n" );
?>
这段代码要简单得多。它仅有一个接口 IUser 和一个实现此接口的 User 类。User 类有两个创建对象的静态方法。此关系可用图 2 中的 UML 表示。
图 2. IUser 接口和带有工厂方法的 user 类
在命令行中运行脚本产生的结果与清单 1 的结果相同,如下所示:
% php factory2.php
Jack
%
如上所述,有时此类模式在规模较小的环境中似乎有些大材小用。不过,最好还是学习这种扎实的编码形式,以便应用于任意规模的项目中。
分享到:
相关推荐
本压缩包“php设计模式代码”包含了作者亲笔编写的一些常见PHP设计模式的实现,下面将对这些设计模式进行详细的阐述。 1. **单例模式**:这种模式确保一个类只有一个实例,并提供一个全局访问点。在PHP中,单例模式...
简单工厂模式是软件设计模式中的一种,它属于创建型模式,主要用来解决对象的创建问题。在PHP中,我们可以利用这种模式来简化对象的实例化过程,减少代码的耦合度,提高代码的可维护性。 简单工厂模式的核心思想是...
总结来说,工厂模式是一种重要的设计模式,用于解决对象创建的问题。它将对象的创建过程封装起来,使得系统对具体类的依赖降低,提高了灵活性和可扩展性。简单工厂模式适用于创建同一等级结构中的固定产品,而工厂...
PHP实现的抽象工厂模式,大家可以下载来参考学习下。
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,不会直接实例化对象,而是通过一个专门的工厂类来创建。工厂类可以根据提供的参数来决定创建哪种类型的实例。 在 PHP...
以上只是PHP设计模式中的一部分,每种模式都有其适用的场景和价值。通过学习和应用这些设计模式,开发者可以写出更高效、更具扩展性和易于维护的代码。在实际项目中,根据需求灵活选择和组合设计模式,可以显著提高...
PHP 设计模式实例之观察者模式、策略模式、简单工厂模式 PHP 设计模式实例之观察者模式、策略模式、简单工厂模式是指在 PHP 编程中应用设计模式来解决实际问题的实例。设计模式是一种通用的解决方案,可以重复使用...
因此,我会根据【标题】和【描述】字段中提供的信息,来生成关于PHP设计模式的知识点。 PHP设计模式的知识点主要包括: 1. 设计模式的概念:设计模式是软件开发中用于解决特定问题的一般性模板,它不是直接的代码...
《PHP设计模式》是一本探讨如何在PHP编程中应用设计模式的书籍。设计模式是软件工程领域中,解决常见问题的模板或策略。本书作者是美国的Aaron Saray,内容详尽地介绍了各种设计模式,旨在帮助PHP开发者构建出更加...
在软件设计模式中,工厂模式是一种常用的创建型模式,它提供了一种创建对象的最佳方式。在PHP中,工厂模式能够帮助我们解耦代码,使得代码更具有灵活性和可扩展性。在这个例子中,我们将深入探讨如何使用工厂模式来...
《Learning PHP设计模式》这本书为PHP开发者提供了一个深入理解并应用设计模式的宝贵资源。 该书中文翻译版于2014年首次在中国出版,由电力出版社发行,以清晰的PDF格式呈现,便于读者阅读和查阅。目录结构完整,...
其次,工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需指定具体的类。在PHP中,工厂模式可以用来解耦对象的创建和使用,使得更换或扩展产品类型变得更加容易。工厂类负责创建对象,客户端只...
简单工厂模式是软件设计模式中的一种,它在PHP编程中被广泛使用,特别是在处理对象创建时需要根据条件或参数动态选择具体类的情况。这个模式的主要目的是为了封装对象的创建过程,使得客户端代码无需关心具体对象的...
工厂模式是一种常用的设计模式,它在软件工程中用于创建对象,提供了一种封装产品创建的方式。在PHP中,工厂模式的应用同样广泛,特别是在需要动态决定实例化哪个类或者需要隔离类与实例化过程的情况下。本篇文章将...
总之,《PHP设计模式全解》这份资源是PHP开发者进阶的必备之选,它将引导你理解并掌握设计模式的精髓,提升你的编程思维,从而写出更高质量的代码。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
《PHP设计模式介绍》第三章 工厂模式 《PHP设计模式介绍》第四章 单条模式 《PHP设计模式介绍》第五章 注册模式 《PHP设计模式介绍》第六章 伪对象模式 《PHP设计模式介绍》第七章 策略模式 《PHP设计模式介绍...
### PHP设计模式详解 #### 一、设计模式概述 **设计模式**是在软件工程领域中广泛应用的一种编程思想,它提供了一种系统化的解决方案,用于解决软件设计中的常见问题。设计模式不仅有助于提高代码的可复用性和可...
本文实例讲述了PHP设计模式之工厂方法设计模式。分享给大家供大家参考,具体如下: 一、什么是工厂方法模式 作为一种创建型设计模式,工厂方法模式就是要创建“某种东西”。对于工厂方法,要创建的“东西”是一个...
php设计模式,工厂抽象模式介绍,以及案例,可以参考下
工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端需要创建一个对象时,只需要指定其类型即可,而无需知道具体的创建过程。工厂模式将对象的创建过程封装了起来,使得...