zoukankan      html  css  js  c++  java
  • 设计模式(一)单例模式

      设计模式为了解决软件设计中,反复出现的问题,所提出的解决方案。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;
    

      

     

      

      

  • 相关阅读:
    maven 配置报错 JAVA_HOME not found in your environment
    file控件change事件触发问题
    自己动手写easyui的checkbox
    json数组传递到后台controller
    yii2 添加模块过程
    YII框架中php入口文件隐藏
    YII框架路由和URL生成
    Node.js脚本杀掉占用端口的进程
    Java单例模式的6种写法
    HTTPS时代已来,你做好准备了吗?
  • 原文地址:https://www.cnblogs.com/maggie94/p/6729770.html
Copyright © 2011-2022 走看看