栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

php各种设计模式简单实践思考

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

php各种设计模式简单实践思考

前言

我一直觉得什么框架,版本,甚至语言对于一个coder来说真的不算什么,掌握一个特别高大上的一个框架或者是一个新的,少众的语言真的不算什么,因为你可以,我要花时间也可以,大家都是这样的。所以基本的显得额外重要,即是算法和数据结构,再就是好的设计模式了,,,听过一句话,是好的数据结构是让计算机更快的工作,而一个好的设计模式则是使开发者工作的更快!

单例模式

单例模式特点

  • $_instance 必须声明为静态的私有变量

  • 构造函数和克隆函数必须声明为私有的,这是为了防止外部程序 new 类从而失去单例模式的意义

  • getInstance()方法必须声明为公有的,必须调用此方法以返回唯一实例的一个引用

  • ::操作符只能访问静态变量或静态函数

  • PHP的单例模式是相对而言的,因为PHP的解释运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。

'XXX','user'=>'XXX','password'=>'XXX');        private static $_instance =null;        private function __construct(){}        private function __clone(){}        static public function getInstance(){            if(self::$_instance== null || isset(self::$_instance)){                self::$_instance= new self;
            }                return self::$_instance;    
        }        public function showSomething(){            return self::$arr;
        }

    }    /////////////////////test///////////////

    $a=single::getInstance();
    print_r(single::getInstance()->showSomething());?>
工厂模式

工厂类就是一个专门用来创建其它对象的类,工厂类在多态性编程实践中是非常重要的。它允许动态替换类,修改配置,会使应用程序更加灵活。掌握工厂模式对Web开发是必不可少的。
特点:

  • 工厂模式通常用来返回类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者。

  • 通常工厂模式有一个关键的构造,即一般被命名为factory的静态方法。这个静态方法可以接受任意数量的参数,并且必须返回一个对象。

工厂模式又分为:

  • 简单工厂模式(Simple Factory)

  • 工厂方法模式(Factory Method)

  • 抽象工厂模式(Abstract Factory)

简单工厂模式:用来生产同一等级结构中的任意产品。对与增加新的产品,无能为力

工厂模式 :用来生产同一等级结构中的固定产品。(支持增加任意产品)

抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)

getMessage();
               }
            }
}//工厂方法模式
    interface  people {            function  jiehun();
    }    //定义接口
    class man implements people{        public $ring=null;        public $car=null;        public $house=null;        public function getAllthing(){            $this->ring='10000';            $this->car='100000';            $this->house='1000000';
        }        public function jiehun() {            if($this->ring && $this->car && $this->house)                        echo '我可以结婚了
';                    else                         echo '我是臭考高分,还不能结婚
';         }     }    class women implements people {        public $face='ugly';        public function getAllthing(){            $this->face='nice';         }        public function jiehun() {                    if($this->face =='nice')                        echo '我可以结婚了
';                    else                         echo '我是臭考高分,还不能结婚
';          }     }    interface  createpeople {           // 注意了,这里是工厂模式本质区别所在,将对象的创建抽象成一个接口。         public function create();     }    class FactoryMan implements createpeople{        public  function create() {                    return  new man;             }     }    class FactoryWomen implements createpeople {        public function create() {                    return new women;             }     }    class  Client {        // 简单工厂里的静态方法             public function test() {                 $Factory =  new  FactoryMan;                 $man = $Factory->create();                 $man->jiehun();                 $Factory =  new  FactoryWomen;                 $woman = $Factory->create();                 $woman->getAllthing();                 $woman->jiehun();             }     }/////////////test////////////     $f = new Client;     $f->test();//抽象模式就是在工厂模式下接口中添加相应的不同方法即可?>
策略模式(Strategy Pattern)

策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。
策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。
策略模式的三个特性:

  • 定义抽象角色类(定义好各个实现的共同抽象方法)

  • 定义具体策略类(具体实现父类的共同方法)

  • 定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)

PrintPage ();
        }
    }///////////////test////////////////
    $bro = new Browser ();    echo $bro->call (new ieAgent );
总结

在当今框架横行的PHP世界,MVC固然是所有PHPer最重要的模式,一旦脱离框架,我不禁思考,我们还能写出绝妙的代码吗?一起努力吧~

参考文献
  • http://www.cnblogs.com/yangjinjin/archive/2013/01/31/2887492.html

  • http://www.cnblogs.com/hongfei/archive/2012/07/07/2580776.html



作者:michaelgbw
链接:https://www.jianshu.com/p/89ef4c737ede

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号