配置与设计模式

1.PHP中使用ArrayAccess实现配置文件的加载

$config = new \IMooc\Config(__DIR__.‘/configs‘);var_dump($config[‘controller‘]);

<?phpnamespace IMooc;

class Config implements \ArrayAccess{    protected $path;    protected $configs = array();

function __construct($path)    {        $this->path = $path;    }

public function offsetExists($key)    {        return isset($this->configs[$key]);    }

public function offsetGet($key)    {        if (empty($this->configs[$key]))        {            $file_path = $this->path.‘/‘.$key.‘.php‘;            $config = require $file_path;            $this->configs[$key] = $config;            return $this->configs[$key];        }    }

public function offsetSet($Key, $value)    {        throw new \Exception("cannot write config file.");    }

public function offsetUnset($key)    {        unset($this->configs[$key]);    }}

<?phpnamespace Configs;$config = array(    ‘home‘ => array(        ‘decorator‘ => array(            ‘IMooc\Decorator\Template‘,        ),    ),    ‘default‘ => ‘hello world‘,);return $config;


2.在工厂方法中读取配置,生成可配置化的对象
$db = \IMooc\Factory::getDatabase();

<?php
namespace IMooc;

class Factory{

static function getDatabase($id = ‘master‘)    {        $key = ‘database_‘.$id;
        if ($id == ‘slave‘)
        {
            $slaves = Application::getInstance()->config[‘database‘][‘slave‘];
            $db_conf = $slaves[array_rand($slaves)];
        }
        else
        {
            $db_conf = Application::getInstance()->config[‘database‘]
[$id];
        }
        $db = Register::get($key);
        if (!$db)
        {            $db = new Database\MySQLi();
            $db->connect($db_conf[‘host‘], $db_conf[‘user‘], $db_conf[‘password‘], $db_conf[‘dbname‘]);
            Register::set($key, $db);
        }
        return $db;    }}

3.使用装饰器模式实现权限验证,模板渲染,JSON串化

4.使用观察者模式实现数据更新事件的一系列更新操作

5.使用代理模式实现数据的主从自动切换

来自为知笔记(Wiz)

时间: 2024-08-08 05:37:35

配置与设计模式的相关文章

PHP十二种设计模式

PSR-0规范的设计基础 1.全部使用命名空间 2.所有php文件必须自动载入,不能有include/require spl_autoload_register 3.单一入口模式 1.三种基本的设计模式 工厂模式 用一个工厂方法去替换掉一个new class Factory{ static function createDatabase(){ $db = new Database; return $db; } } 使用的时候就可以用 $db = Factory::createDatabase()

Android学习路线

第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收:构造函数.this关键字.方法和方法的参数传递过程.static关键字.内部类,Java的垃极回收机制,Javadoc介绍. 4.对象实例化过程.方法的覆盖.final关键字.抽象类.接口.继承的优点和缺点剖析:对象的多态性:子类和父类之间的转换.抽象类和接口在多态中的应用.多态带来的好处.

AngularJS是什么

先标明来源: https://code.angularjs.org/1.3.15/docs/guide/introduction 也就是官网针对1.3.15版的说明 What Is Angular? AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML’s syntax to express 

java 学习写架构必会几大技术点

java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注解 6. 设计模式 7. 代理机制(aop) 8. serlvet基础(过滤器等等)几样比较实用的技术: 1. 模板语言freemarker 2. ognl 3. gson json工具类    大家对于几大框架望而生畏,实际上只要明白他的原理,就会触类旁通,在这里我说说自己的几点拙见! MVC层

Java架构必会几大技术点(转)

关于学习架构,必须会的几点技术: 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注解 6. 设计模式 7. 代理机制(aop) 8. serlvet基础(过滤器等等) 几样比较实用的技术: 1. 模板语言freemarker 2. ognl 3. gson json工具类 大家对于几大框架望而生畏,实际上只要明白他的原理,就会触类旁通,在这里我说说自己的几点拙见! MVC层(Struts,Springmvc):

Android学习路线总结,绝对干货

一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. 最近看到很多Android新手问Android学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后以我的工作经验给大家总结一下,让你们少走弯路,提取一些工作中经常用到的技术. 二.学习知识汇总 1.Java se基础 1).Java基本数据类型与表达式,分支循环. 2).String和

Android资深工程师进阶之路

看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的.为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己.由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Andr

开源项目几点心得,Java架构必会几大技术点

Java架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注解 6. 设计模式 7. 代理机制(aop) 8. serlvet基础(过滤器等等) 几样比较实用的技术: 1. 模板语言freemarker 2. ognl 3. gson json工具类 大家对于几大框架望而生畏,实际上只要明白他的原理,就会触类旁通,在这里我说说自己的几点拙见! MVC层(Strut

云计算设计模式(八)——外部配置存储模式

云计算设计模式(八)--外部配置存储模式 移动配置信息从应用部署包到一个集中位置.这个模式可以提供机会,以便管理和配置数据的控制,以及用于跨应用程序和应用程序实例共享的配置数据. 背景和问题 大多数应用程序运行时环境包括位于应用程序文件夹内的在部署应用程序文件保持配置信息.在某些情况下也能够编辑这些文件来改变该应用程序的行为,它已经被部署之后.然而,在许多情况下,改变配置所需要的应用程序被重新部署,从而导致不可接受的停机时间和额外的管理开销. 本地配置文件还配置限制为单个应用程序,而在某些情况下