php编程模式,PHP编程之-设计模式简单实例
【单例模式】
/* * @singleton * */ abstract class SingletonClass{ static private $obj; public function init(){} static public function getInstance(){} } class MyInstanceClass extends SingletonClass{ static private $obj; public static function getInstance(){ if(!(self::$obj instanceof self)){ self::$obj = new self(); } return self::$obj; } public function init(){ echo "1、我是单例模式/n"; } private function __construct(){ return false; } private function __wakeup(){ return false; } } MyInstanceClass::getInstance()->init();
【组合模式】
/* * @composite * */ class XmlClass{ private $nodesArray = array(); private $name = "我是叶子节点/n"; private $isNode = true; public function __construct(){ } public function acceptNodes($array){ foreach($array as $key=>$value){ array_push($this->nodesArray,$value); } $this->name = "我是父节点/n"; $this->isNode = false; } public function getNodes(){ if($this->isNode === true){ return false; }else{ return $this->nodesArray; } } public function getName(){ print_r($this->name); } public function fn1(){ } public function printMyself(){ $this->getName(); if($this->isNode === false){ $tempArray = $this->getNodes(); foreach($tempArray as $key=>$value){ $value->printMyself(); } } } } $obj1 = new XmlClass(); $obj2 = new XmlClass(); $sup_obj = new XmlClass(); $sup_obj->acceptNodes(array($obj1,$obj2)); $sup_obj->printMyself();
【装饰模式】
/* * @decorator【装饰模式】 * */ class A{ public $name = "JianxunLiu/n"; } interface item1Interface{ public function getName(); } class DecoratorClass implements item1Interface{ private $obj; public function __construct(A $obj){ $this->obj = $obj; } public function getName(){ print_r($this->obj->name); } } $obj = new A(); $decoratorObj = new DecoratorClass($obj); $decoratorObj->getName();
【外观模式】
/* * @Facade【外观模式】 * */ $obj = new myFacade(array('name'=>'jianxun','sex'=>'man')); $obj->getName(); $obj->getSex(); class myFacade{ private $name; private $sex; public function __construct($array){ $this->name = $array['name']; $this->sex = $array['sex']; } public function getName(){ print_r($this->name); } public function getSex(){ print_r($this->sex); } }
【策略模式】
/* * @strategy * */ class MyClass1{ public function behaviorFn(){ echo "我会飞/n"; } } class MyStrategy{ private $obj; public function __construct(MyClass1 $obj){ $this->obj = $obj; } public function behaviorFn(){ $this->obj->behaviorFn(); } } $obj = new MyStrategy(new MyClass1()); $obj->behaviorFn();
【责任链模式】
/* * @responsibility * */ class EricOuter{ private $obj; public function __construct(EricInner $obj){ $this->obj = $obj; } public function say(){ echo "我会说/n"; } public function __call($name,$args){ $this->obj->$name(); } } class EricInner{ public function run(){ echo "我会跑/n"; } } $obj = new EricOuter(new EricInner()); $obj->say(); $obj->run();
【观察者模式】
/* * @observer【观察者模式】 * */ class Observer{ private $eventArray = array(); public function addEvent(Event $obj){ array_push($this->eventArray,$obj); } public function trigger(){ foreach($this->eventArray as $key=>$value){ $value->handler(); } } } abstract class Event{ abstract public function handler(); } class Event1 extends Event{ public function handler(){ echo "event1/n"; } } class Event2 extends Event{ public function handler(){ echo "event2/n"; } } class Event3 extends Event{ public function handler(){ echo "event3/n"; } } $obj = new Observer(); $event1 = new Event1(); $event2 = new Event2(); $event3 = new Event3(); $obj->addEvent($event1); $obj->addEvent($event2); $obj->addEvent($event3); $obj->trigger();
【命令行模式】
/* * @ command * */ $obj = new CommandObj(); $obj->say("Right"); class CommandObj{ public function say($str){ echo sprintf("hello Mr. %s",$str); } }
php编程模式,PHP编程之-设计模式简单实例相关推荐
- 『设计模式』Web程序开发最基本的编程模式--MVC编程模式
23种设计模式+额外常用设计模式汇总 (持续更新) 什么是MVC编程模式 ? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controlle ...
- python的编程模式-python编程(python开发的三种运行模式)【转】
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环模式 多线程模式 reactor模式 [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing ...
- 常用设计模式 简单实例
1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...
- python采用那种编程模式_使用Mixin设计模式进行Python编程的方法讲解
class BetterSimpleItemContainer(object, DictMixin): def __getitem__(self, id): return self.data[id] ...
- python的编程模式-举例讲解Python设计模式编程中的访问者与观察者模式
访问者模式我觉得Visitor模式是在补修改已有程序结构前提下,通过添加额外的访问者完成对代码功能的拓展 为什么这样用?当你的类层次较多,在某层结构中增加新的方法,要是在基类上面添加或者变更,可能破坏 ...
- python编程模式_Python编程中的反模式
原标题:Python编程中的反模式 这篇文章收集了我在Python新手开发者写的代码中所见到的不规范但偶尔又很微妙的问题. 本文的目的是为了帮助那些新手开发者渡过写出丑陋的Python代码的阶段. 对 ...
- python的编程模式-Python 编程,应该养成哪些好的习惯?
我在模块还没认全,元类.类方法和静态方法的区别.装饰器写的还不溜等还不懂的时候,就开始注意让写的代码尽量Pythonic和符合PEP8标准. 到现在,基本手写的都是符合标准的Python代码.我写代码 ...
- python基础编程:python下10个简单实例代码
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...
- java基础代码实例_python基础编程:python下10个简单实例代码
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析 ...
最新文章
- Google App Engine技术架构之Google App Engine架构
- python 文件命令
- CoDeSys的前世今生
- 它是世界上最轻的固体!1000℃下不会熔化,上过火星,还能进你家......
- 【无码专区9】序列统计(带权并查集 + 前缀和建边 + dp)
- PaperNotes(2)-Generative Adversarial Nets
- html有序列表和无序列表互相嵌套,关于列表的嵌套,下列说法正确的是( )。 答案:无序列表和有序列表可以相互嵌套与
之间相当于一个容器,可以嵌套无序列表、有序列表等网页元素...
- 细节问题:ZEROFILL的用法范围。
- Halcon图像预处理与形态学(形态学)
- qt android .so反编译,Qt5 程序初步逆向分析+解析脚本
- hadoop namenode启动不了_hadoop全分布式是个什么鬼?!动手搭建Hadoop(4)
- pix2pixhd_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
- 2021-09-23各个国家简称以及收手机区号
- SDS之BlockChain Storage系列:3、为什说区块链存储是下一个热点 (上)
- Tornado get/post请求异步处理框架分析
- jQuery的文档处理
- Redis知识点整理(详讲)
- 有无可能在非IOS系统上实现苹果为网易/腾讯邮箱做的实时推送
- 只会 Python 不行,不会 Python 万万不行
- Proteus创建新项目的详细操作步骤(keil和Proteus联合仿真)
热门文章
- mac android屏幕演示,如何在Mac上录制Android设备的屏幕 | MOS86
- 前端 验证码隐藏怎么实现_Python爬虫教程:200行代码实现一个滑动验证码
- 通过git将本地代码上传码云
- JavaScript 运行机制详解(理解同步、异步和事件循环)
- sql优化学习(一)
- 微信支付开发(7) 刷卡支付
- 明尼苏达推荐系统导论(第一课 欢迎来到RS)
- [转]CSS浏览器兼容问题总结
- WAP2.0(XHTML MP)基础介绍
- Redhat5下haproxy+keepalived+nginx配置笔记