1、工厂模式

<?php
namespace Facebab;
class Factory {
static function createDatabase () {
return new Database();
} } $db = Facebab\Factory::createDatabase();
$db->fetchOne();

2、单例模式

<?php
namespace Facebab;
class Singleton { private static $db = null;
private __construct() { } static function getInstance() { if (self::$db != null) {
return self::$db;
} else {
self::$db = new self();
return self::$db;
} } private __clone() { }
}

3、注册模式

<?php
namespace Facebab;
class Register { private static $objects = array(); static function set($alias,$object) {
self::$objects[$alias] = $object;
} static function _unset($alias) {
unset(self::$objects[$alias]);
} static function get($name) {
return self::$objects[$name];
}
} Register::set('db1',$db);
$db = Facebab\Register::get('db1');

php 3种常见设计模式的更多相关文章

  1. PHP的五种常见设计模式

    工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合.要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程.在更改一个代码片段时,就会发生问题,系统其他部分 —— 您曾认为完 ...

  2. 几种常见设计模式在项目中的应用<Singleton、Factory、Strategy>

    一.前言 前几天阅读一框架文档,里面有一段这样的描述 “从对象工厂中………” ,促使写下本文.尽管一些模式简单和简单,但是常用.有用. 结合最近一个项目场景回顾一下里面应用到的一些模式<Sing ...

  3. JAVA设计模式简介及六种常见设计模式详解

    一.什么是设计模式                                                                                           ...

  4. 你值得关注的几种常见的js设计模式

    前言 潜水了一段时间,今天空闲时间复盘下之前的知识点,聊聊 js 几种常见的设计模式. 掌握 JavaScript 中常见的一些设计模式,对我们书写规范性代码,可维护性代码有很大的帮助. ps:最近在 ...

  5. java之 ------ 几种常见的简单设计模式

    前言: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.用于解决特定环境下.反复出现的特定问题的解决方式.使用设计模式是为了可重用代码.让代 ...

  6. [转载 ]五种常见的 PHP 设计模式

    五种常见的 PHP 设计模式 策略模式 策略模式是对象的行为模式,用意是对一组算法的封装.动态的选择需要的算法并使用. 策略模式指的是程序中涉及决策控制的一种模式.策略模式功能非常强大,因为这个设计模 ...

  7. JavaScript 中常见设计模式整理

    开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式.本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知. JavaScript 中常见设计模 ...

  8. JS中常见设计模式总结

    github: https://github.com/14glwu/FEInterviewBox/tree/master/JS%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F ...

  9. Javascript常见设计模式解析

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.毫无疑问,设计模式于己 ...

随机推荐

  1. LINK : fatal error LNK1104: 无法打开文件“gtestd.lib”

    解决办法: 复制编译出来的gtestd.lib文件到D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib目录下 我这里用的是vs2015 ...

  2. servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)

    第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericSe ...

  3. Linux内核同步机制--转发自蜗窝科技

    Linux内核同步机制之(一):原子操作 http://www.wowotech.net/linux_kenrel/atomic.html 一.源由 我们的程序逻辑经常遇到这样的操作序列: 1.读一个 ...

  4. canvas 画六边形边框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. poi管道流的导入导出

    /** * 导入学生信息 * * @param classid * @param uploadFilePath * @return */ public boolean uploadStudentFil ...

  6. Nodejs编码转化问题

    目前Node.js仅支持hex.utf8.ascii.binary.base64.ucs2几种编码的转换.对于GBK,GB2312等编码,Nodejs自带的toString()方法不支持,因此中文转化 ...

  7. Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

    内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...

  8. centos上手动编译安装tmux的问题

    https://blog.linuxeye.com/323.html 装个tmux也是不容易.. 关键词:libevent要自己下载2.0版,然后编译.安装时还要各种参数指定目录.

  9. [vb.net]判断窗体是否已打开

    1.使用OpenForms if my.Application.OpenForms.Item("FormName") isnot nothing then搜索 do somethi ...

  10. css3之动画

    animation属性 属性 描述 @keyframes 动画名 动画关键帧 animation 动画的6个属性 animation-name 动画的名称 animation-duration 动画的 ...