PHP设计模式(1)工厂模式

简介:

工厂模式 是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改是所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。

比方说我们在网站上给用户制定一些任务让用户完成,不同的任务我们会创建不同的类,当用户完成某个任务的时候,会给用户一些对应的奖励,这个时候如果我们任务的类型比较多,那么我们可以采用工厂模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
//说明这里要引入对应的文件
class  Task_Factory{
     //任务列表的类数组
     private  $_arrClass  array ();
     //定义一个私有的静态变量,给生成实例的静态方法使用
     private  static  $_obj  = null;
     //初始化任务类数组,前面是key,对应真正的类名
     private  function  __construct(){
         //发新浪微博任务
         $this ->addClass( 'sina_wb' 'Sinawb' );
         //发腾讯微博任务
         $this ->addClass( 'qq_wb' ,    'Qqwb' );
         //互动任务
         $this ->addClass( 'interact' , 'Interact' );
         //连续签到任务
         $this ->addClass( 'sign' ,     'Sign' );
     }
     //创建类的动作,定义为静态
     public  static  function  factory( $tClass ){
         if  (self:: $_obj  == null){
             self:: $_obj  =   new  self();
         }
         if (!isset(self:: $_obj ->_arrClass[ $tClass ])){
             //如果类不存在,返回false
             return  false;
         } else {
             //类存在则生成实例
             $strClassName  = self:: $_obj ->_arrClass[ $tClass ];
         }
         $ret  new  $strClassName ();
         //这里Task_Base_Abstract是一个任务类的抽象类,定义了一些任务共有方法
         //比方说任务完成进度,做任务等方法
         if ( $ret  instanceof  Task_Base_Abstract){
             //确认实例对象生成,则返回实例
             return  $ret ;
         } else {
             //失败则返回false
             return  false;
         }
     }
                             
     //往数组里添加任务类,初始化时用
     private  function  addClass( $name $RealName ){
         $this ->_arrClass[ $name ] =  $RealName ;
     }
                             
}

这样,当我们要使用一个类时,可以如下调用:

1
2
//参数为对应的类的key
$objTask  = Task_Factory::factory( 'interact' );
























本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1341694 ,如需转载请自行联系原作者
相关文章
|
14天前
|
设计模式 算法 PHP
php设计模式--策略模式(六)
php设计模式--策略模式(六)
13 0
|
14天前
|
设计模式 PHP
php设计模式--装饰模式(七)装饰模式完成文章编辑
php设计模式--装饰模式(七)装饰模式完成文章编辑
13 0
|
14天前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
12 0
|
14天前
|
设计模式 Java PHP
php设计模式--简单工厂模式(一)
php设计模式--简单工厂模式(一)
16 0
|
14天前
|
设计模式 PHP
php设计模式--单例模式(三)
php设计模式--单例模式(三)
14 0
|
14天前
|
设计模式 PHP
php设计模式--抽象工厂模式(二)
php设计模式--抽象工厂模式(二)
16 0
|
14天前
|
设计模式 算法 搜索推荐
【PHP开发专栏】PHP设计模式解析与实践
【4月更文挑战第29天】本文介绍了设计模式在PHP开发中的应用,包括创建型(如单例、工厂模式)、结构型和行为型模式(如观察者、策略模式)。通过示例展示了如何在PHP中实现这些模式,强调了它们在提升代码可维护性和可扩展性方面的作用。设计模式是解决常见问题的最佳实践,但在使用时需避免过度设计,根据实际需求选择合适的设计模式。
|
14天前
|
设计模式 PHP
php设计模式--观察者模式(4.2)PHP实现观察者模式
php设计模式--观察者模式(4.2)PHP实现观察者模式
16 0
|
14天前
|
设计模式 PHP
php设计模式--责任链模式(五)
php设计模式--责任链模式(五)
16 0
|
10月前
|
设计模式 数据库连接 PHP
PHP设计模式21-工厂模式的讲解及应用
PHP快速入门与实战学会好设计模式,能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常优雅,避免出错,也能更好的扩展和维护我们的项目。
113 32