当前位置:  编程技术>php
本页文章导读:
    ▪php设计模式 Factory(工厂模式)       代码如下: <?php /** * 工厂方法模式 * * 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类 */ /* class DBFactory { public static function create($type) { swtich($.........
    ▪php设计模式 Interpreter(解释器模式)       代码如下: <?php /** * 解释器 示例 * * @create_date: 2010-01-04 */ class Expression { function interpreter($str) { return $str; } } class ExpressionNum extends Expression { function interpreter($str) { switch($str) { case "0": return "零.........
    ▪php设计模式 Strategy(策略模式)       代码如下: <?php /** * 策略模式(Strategy.php) * * 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户 * */ // ---以下是一系列算法的封闭---- i.........

[1]php设计模式 Factory(工厂模式)
    来源: 互联网  发布时间: 2013-11-30
代码如下:

<?php
/**
* 工厂方法模式
*
* 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类
*/

/*
class DBFactory
{
public static function create($type)
{
swtich($type)
{
case "Mysql":
return new MysqlDB(); break;
case "Postgre":
return new PostgreDB(); break;
case "Mssql":
return new MssqlDB(); break;
}
}
}
*/
class DBFactory
{
public static function create($type)
{
$class = $type."DB";
return new $class;
}
}

interface DB
{
public function connect();
public function exec();
}

class MysqlDB implements DB
{
public function __construct() {
echo "mysql db<br/>";
}

public function connect() {
}

public function exec() {
}
}

class PostgreDB implements DB
{
public function __construct() {
echo "Postgre db<br/>";
}

public function connect() {
}

public function exec() {
}
}

class MssqlDB implements DB
{
public function __construct() {
echo "mssql db<br/>";
}

public function connect() {
}
public function exec() {
}
}

$oMysql = DBFactory::create("Mysql");
$oPostgre = DBFactory::create("Postgre");
$oMssql = DBFactory::create("Mssql");

    
[2]php设计模式 Interpreter(解释器模式)
    来源: 互联网  发布时间: 2013-11-30
代码如下:

<?php
/**
* 解释器 示例
*
* @create_date: 2010-01-04
*/
class Expression
{
function interpreter($str)
{
return $str;
}
}
class ExpressionNum extends Expression
{
function interpreter($str)
{
switch($str)
{
case "0": return "零";
case "1": return "一";
case "2": return "二";
case "3": return "三";
case "4": return "四";
case "5": return "五";
case "6": return "六";
case "7": return "七";
case "8": return "八";
case "9": return "九";
}
}
}
class ExpressionCharater extends Expression
{
function interpreter($str)
{
return strtoupper($str);
}
}
class Interpreter
{
function execute($string)
{
$expression = null;
for($i = 0;$i<strlen($string);$i++) {
$temp = $string[$i];
switch(true)
{
case is_numeric($temp): $expression = new ExpressionNum(); break;
default: $expression = new ExpressionCharater();
}
echo $expression->interpreter($temp);
}
}
}
$obj = new Interpreter();
$obj->execute("12345abc");
?>

    
[3]php设计模式 Strategy(策略模式)
    来源: 互联网  发布时间: 2013-11-30
代码如下:

<?php
/**
* 策略模式(Strategy.php)
*
* 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户
*
*/

// ---以下是一系列算法的封闭----
interface CacheTable
{
public function get($key);
public function set($key,$value);
public function del($key);
}

// 不使用缓存
class NoCache implements CacheTable
{
public function __construct(){
echo "Use NoCache<br/>";
}

public function get($key)
{
return false;
}

public function set($key,$value)
{
return true;
}

public function del($key)
{
return false;
}
}

// 文件缓存
class FileCache implements CacheTable
{
public function __construct()
{
echo "Use FileCache<br/>";
// 文件缓存构造函数
}

public function get($key)
{
// 文件缓存的get方法实现
}

public function set($key,$value)
{
// 文件缓存的set方法实现
}

public function del($key)
{
// 文件缓存的del方法实现
}
}

// TTServer
class TTCache implements CacheTable
{
public function __construct()
{
echo "Use TTCache<br/>";
// TTServer缓存构造函数
}

public function get($key)
{
// TTServer缓存的get方法实现
}

public function set($key,$value)
{
// TTServer缓存的set方法实现
}

public function del($key)
{
// TTServer缓存的del方法实现
}
}

// -- 以下是使用不用缓存的策略 ------
class Model
{
private $_cache;
public function __construct()
{
$this->_cache = new NoCache();
}

public function setCache($cache)
{
$this->_cache = $cache;
}
}

class UserModel extends Model
{
}

class PorductModel extends Model
{
public function __construct()
{
$this->_cache = new TTCache();
}
}

// -- 实例一下 ---
$mdlUser = new UserModel();
$mdlProduct = new PorductModel();
$mdlProduct->setCache(new FileCache()); // 改变缓存策略
?>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
数据库 iis7站长之家
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3