• 设计模式(一)单例模式


      设计模式为了解决软件设计中,反复出现的问题,所提出的解决方案。1990年由Erich Gamma从建筑设计领域引入计算机科学。设计模式主要用于避免引起麻烦的紧耦合,增强软件适应变化的能力。

      算法不是一种设计模式,算法主要用来解决计算上的问题,非设计上的问题。

      设计模式分享wiki地址:http://wiki.c2.com/?WikiWikiWeb

    单例模式:

      单例对象的类必须保证只有一个实例存在。

      设计关键:

        构造函数定义为私有,防止其他代码实例化该类

        一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getinstance这个名称)

        单例模式在多线程下需要注意:最好提供一个互斥锁,防止生成两个实例。

      构建方法:

        懒汉方式:全局的单例实例在第一次被使用时构建

        饿汉方式:全局的单例实例在类装载时构建:注意:php不支持饿汉模式,因为php不支持在类定义的时候给类的成员变量赋予非基本类型的值。如表达式,new操作等。

      php实现单例代码:

    class singlePattern{
        private static $_instance = null;//非静态变量不能够用::方式访问
        private function __construct(){//私有化构造函数,防止其他代码实例化该对象
            
        }
        
        private function __clone(){//私有该函数,防止有代码克隆已经获取到的实例
            
        }
        
        public static function getInstance(){//必须声明为静态方法,类可以直接调用
            if(self::$_instance == null){
                self::$_instance = new singlePattern();
            }
            
            return self::$_instance;
        }
        
        public function test(){
            echo "single pattern success!";
        }
    }
    $single = singlePattern::getInstance();
    $single->test();
    $single1 = new singlePattern();
    $single2 = clone $single;
    

      

     

      

      

  • 相关阅读:
    Directx11教程(63) tessellation学习(5)
    OpenCL 学习step by step (1) 安装AMD OpenCL APP
    Directx11教程(62) tessellation学习(4)
    Directx11教程(61) tessellation学习(3)
    Notes 和 Domino 已知限制
    asp.net中的WebApplication和WebSite
    平淡的2007
    TinyMCE与Domino集成
    jOOQ 2.6.0 发布,Java的ORM框架
    bandwidth 0.32f 发布,内存带宽测试工具
  • 原文地址:https://www.cnblogs.com/maggie94/p/6729770.html
Copyright © 2020-2023  润新知