zoukankan      html  css  js  c++  java
  • 设计模式:简单工厂和单例工厂

     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  *  单例工厂类
    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>";

    Student.class.php

    1 <?php
    2 class Student{
    3     public function __construct(){
    4         echo "我是个小学生";
    5     }
    6 }

    工厂模式

    概念

    也是一种设计模式!

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

    简单工厂

    纯粹工厂

    以上代码

    单例工厂

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

  • 相关阅读:
    Java 网络编程:(四)通信要素2:网络协议
    Java 网络编程:(三)通信要素1:IP和端口号
    Java 网络编程:(二)网络编程&网络通信
    学习进度条35
    学习进度条34
    学习进度条33
    学习进度条32
    学习进度条31
    学习进度条30
    学习进度条29
  • 原文地址:https://www.cnblogs.com/mrszhou/p/7577299.html
Copyright © 2011-2022 走看看