【单例模式】

/*  * @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编程之-设计模式简单实例相关推荐

  1. 『设计模式』Web程序开发最基本的编程模式--MVC编程模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 什么是MVC编程模式 ? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controlle ...

  2. python的编程模式-python编程(python开发的三种运行模式)【转】

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环模式 多线程模式 reactor模式 [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing ...

  3. 常用设计模式 简单实例

    1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...

  4. python采用那种编程模式_使用Mixin设计模式进行Python编程的方法讲解

    class BetterSimpleItemContainer(object, DictMixin): def __getitem__(self, id): return self.data[id] ...

  5. python的编程模式-举例讲解Python设计模式编程中的访问者与观察者模式

    访问者模式我觉得Visitor模式是在补修改已有程序结构前提下,通过添加额外的访问者完成对代码功能的拓展 为什么这样用?当你的类层次较多,在某层结构中增加新的方法,要是在基类上面添加或者变更,可能破坏 ...

  6. python编程模式_Python编程中的反模式

    原标题:Python编程中的反模式 这篇文章收集了我在Python新手开发者写的代码中所见到的不规范但偶尔又很微妙的问题. 本文的目的是为了帮助那些新手开发者渡过写出丑陋的Python代码的阶段. 对 ...

  7. python的编程模式-Python 编程,应该养成哪些好的习惯?

    我在模块还没认全,元类.类方法和静态方法的区别.装饰器写的还不溜等还不懂的时候,就开始注意让写的代码尽量Pythonic和符合PEP8标准. 到现在,基本手写的都是符合标准的Python代码.我写代码 ...

  8. python基础编程:python下10个简单实例代码

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...

  9. java基础代码实例_python基础编程:python下10个简单实例代码

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析 ...

最新文章

  1. Google App Engine技术架构之Google App Engine架构
  2. python 文件命令
  3. CoDeSys的前世今生
  4. 它是世界上最轻的固体!1000℃下不会熔化,上过火星,还能进你家......
  5. 【无码专区9】序列统计(带权并查集 + 前缀和建边 + dp)
  6. PaperNotes(2)-Generative Adversarial Nets
  7. html有序列表和无序列表互相嵌套,关于列表的嵌套,下列说法正确的是( )。 答案:无序列表和有序列表可以相互嵌套与 之间相当于一个容器,可以嵌套无序列表、有序列表等网页元素...
  8. 细节问题:ZEROFILL的用法范围。
  9. Halcon图像预处理与形态学(形态学)
  10. qt android .so反编译,Qt5 程序初步逆向分析+解析脚本
  11. hadoop namenode启动不了_hadoop全分布式是个什么鬼?!动手搭建Hadoop(4)
  12. pix2pixhd_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  13. 2021-09-23各个国家简称以及收手机区号
  14. SDS之BlockChain Storage系列:3、为什说区块链存储是下一个热点 (上)
  15. Tornado get/post请求异步处理框架分析
  16. jQuery的文档处理
  17. Redis知识点整理(详讲)
  18. 有无可能在非IOS系统上实现苹果为网易/腾讯邮箱做的实时推送
  19. 只会 Python 不行,不会 Python 万万不行
  20. Proteus创建新项目的详细操作步骤(keil和Proteus联合仿真)

热门文章

  1. mac android屏幕演示,如何在Mac上录制Android设备的屏幕 | MOS86
  2. 前端 验证码隐藏怎么实现_Python爬虫教程:200行代码实现一个滑动验证码
  3. 通过git将本地代码上传码云
  4. JavaScript 运行机制详解(理解同步、异步和事件循环)
  5. sql优化学习(一)
  6. 微信支付开发(7) 刷卡支付
  7. 明尼苏达推荐系统导论(第一课 欢迎来到RS)
  8. [转]CSS浏览器兼容问题总结
  9. WAP2.0(XHTML MP)基础介绍
  10. Redhat5下haproxy+keepalived+nginx配置笔记