首页 > php教程 > php手册 > 正文

php设计模式 strategy (策略模式)

php中文网
发布: 2016-05-21 10:39:44
原创
1299人浏览过

25种php设计模式,你全都知道吗?下面用代码介绍策略模式(strategy模式)

<?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()); // 改变缓存策略
登录后复制


其他相关设计模式:

http://www.phprm.com/develop/memento.html 备忘录模式(Memento模式)
http://www.phprm.com/develop/observer.html 观察者模式(Observer模式)
http://www.phprm.com/develop/template.html 模板方法模式(Template Method模式)
http://www.phprm.com/develop/command.html 命令模式(command模式)
http://www.phprm.com/develop/composite.html 组合模式(composite模式)
http://www.phprm.com/develop/flyweight.html 享元模式(flyweight模式)
http://www.phprm.com/develop/strategy.html 策略模式(strategy模式)
http://www.phprm.com/develop/state.html 状态模式(state模式)
http://www.phprm.com/develop/adapter.html 适配器模式(adapter模式)
http://www.phprm.com/develop/factory.html 工厂模式(factory模式)
http://www.phprm.com/develop/prototype.html 原型模式(prototype模式)
http://www.phprm.com/develop/facade.html 外观模式(facade模式)
http://www.phprm.com/develop/singleton.html 单例模式(singleton模式)
http://www.phprm.com/develop/bridge.html 桥梁模式(bridge模式)
http://www.phprm.com/develop/decorator.html 装饰模式(decorator模式)
http://www.phprm.com/develop/abstract.html 抽象工厂模式(abstract factory模式)
http://www.phprm.com/develop/builder.html 建造者模式(Builder模式)
http://www.phprm.com/develop/visitor.html 访问者模式(Visitor模式)
http://www.phprm.com/develop/interpreter.html 解释器模式(Interpreter模式)
http://www.phprm.com/develop/mediator.html 中介者模式(Mediator模式)
http://www.phprm.com/develop/chain.html 职责链模式(Chain Of Responsibility模式)
http://www.phprm.com/develop/proxy.html 代理模式(Proxy模式)
http://www.phprm.com/develop/interator.html 迭代器模式(Interator模式)
http://www.phprm.com/develop/dao.html 数据访问对象模式(DAO模式)
http://www.phprm.com/develop/delegation.html 委托模式(Delegation模式)


本文地址:http://www.phprm.com/develop/strategy.html

转载随意,但请附上文章地址:-)

启科网络PHP商城系统
启科网络PHP商城系统

启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。

启科网络PHP商城系统 0
查看详情 启科网络PHP商城系统
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号