设计模式:简单工厂和单例工厂

 1 <?php
 2 /**
 3  *  纯粹工厂类
 4  */
 5 /*class Factory {
 6     public static function getOBJ($class_name) {
 7         include_once ‘./‘.$class_name.‘.class.php‘;
 8         return new $class_name; //可变类
 9     }
10 }
11 */
12
13 /**
14  *  cun工厂类
15  */
16 class Factory {
17     /*
18      生产单例对象
19      @param string $class_name 获得对象所需要的类名
20      @param object 单例对象
21     */
22      public static function getOBJ($class_name) {
23          //键 => 值
24          // 类名 => 该类已经实例化了的对象
25          static $obj_list = array();
26          // 判断当前的类有没有被实例化
27          if (!isset($obj_list[$class_name])) {
28              //说明没有被实例化,所以需要实例化
29              include_once ‘./‘.$class_name.‘.class.php‘;
30              $obj_list[$class_name] = new $class_name;
31          }
32          return $obj_list[$class_name];
33      }
34 }

调用方法:

 1 include ‘./Factory.class.php‘;
 2 $stu1 = Factory::getOBJ(‘Student‘);
 3 $stu2 = Factory::getOBJ(‘Student‘);
 4     echo "<pre>";
 5     var_dump($stu1);
 6     echo "</pre>";
 7     echo "<hr>";
 8
 9     echo "<pre>";
10     var_dump($stu2);
11     echo "</pre>";
12     echo "<hr>";

工厂模式

概念

也是一种设计模式!

工厂模式的含义就是:设计一个类(此时这个类就叫做“工厂类”),该类的作用就是帮助其他的类“生产”对象!

简单工厂

纯粹工厂

以上代码

单例工厂

也是一种单例的实现,但不是“三私一公”的实现,而是在生产对象的工厂类中实现单例效果!

时间: 2024-10-15 05:41:53

设计模式:简单工厂和单例工厂的相关文章

java设计模式(1)-------单例,工厂,值对象,装饰模式

      java设计模式(1) 先简单的介绍下设计模式吧:是一种解决问题的一种行之有效的思想:用于解决特定环境下.重复出现的特定问题的解决方案. 那为什么我们需要学习设计模式呢? 1.设计模式都是一些相对优秀的解决方案,很多问题都是典型的.有代表性的问题,学习设计模式,我们就不用自己从头来解决这些问题,相当于在巨人的肩膀上,复用这些方案即可,站的高看到远,就是要站在巨人的肩膀上把他们踩下去,嘿嘿. 2.设计模式已经成为专业人士的常用词汇,不懂不利于交流,能让你变得很牛逼哦. 3.能让你设计的

编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)

参考来自:http://zz563143188.iteye.com/blog/1847029 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1

简单工厂和单例的一些事

一:简单工厂(使用计算器例子进行描述概括) 定义:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类或接口.简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例. 效果如图所示: //父类 public abstract class Operation { public double NumberA { get; set; } public double NumberB { get;

php : MVC 演示(使用单例工厂)

此例子是MVC的简单应用, 要达到的效果如下: 用户列表: 姓名 年龄 学历 兴趣 出生地 账号创建时间 操作 keen 20 高中 篮球,足球 广东 2016-11-08 10:00:31 删除 andi 30 本科 乒乓球 上海 2016-11-22 10:00:55 删除 ddddddd 40 初中 台球 广州 2016-11-10 12:20:49 删除 eeeeeee 34 大专 慢跑 深圳 2016-11-15 12:21:26 删除 当前用户总数: 4 一.设计表 create t

C++实现一个线程安全的单例工厂

我们见到经常有人用 static 局部对象的方式实现了类似单例模式,最近发现一篇文章明确写明 编译器在处理  static局部变量的时候 并不是线程安全的 !!! http://blogs.msdn.com/b/oldnewthing/archive/2004/03/08/85901.aspx 于是实现了一个单例工厂  并且是线程安全的 #ifndef SINGLETONFACTORY_H #define SINGLETONFACTORY_H #include "windows.h"

面向接口及单例工厂随笔

面向接口及单例工厂 单例工厂是工厂模式的一种,表示生产出的产品为单例产品. ??在上古web开发中,后端是servlet.service.dao这三层.servlet依赖service,service依赖dao,为什么说依赖,因为该层持有另一层的对象: //UserServlet public class UserServlet extends HttpServlet { //一个UserServlet中持有一个UserService的实现类对象 //这里UserService为接口,指向其实现

python实现单例工厂模式

class CarFactory: '''python实现单例工厂模式''' __obj = None __flg_init = True def __new__(cls, *args, **kwargs): if cls.__obj is None: cls.__obj = object.__new__(CarFactory) return cls.__obj def __init__(self): if CarFactory.__flg_init: print('工厂产生了') CarFac

设计模式之----单体(单例)模式

设计模式之--单体(单例)模式 1.介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现.OK,正式开始. 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象. 2. 简单单体与闭包单体 在JavaS

C#中的简单工厂和单例

下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public class CheesePizza:Pizza { public override string Info() { return "您好,奶酪比萨成功订购"; } } 下一个子类 public class PGPizza:Pizza { public override string Info