zoukankan      html  css  js  c++  java
  • php设计模式 工厂模式和单例

    
    
    
    
    1.单例模式
    //让该类在外界无法造对象
    //让外界可以造一个对象,做一个静态方法返回对象
    //在类里面通过让静态变量控制返回对象只能是一个。

    class cat
    {
    public $name;
    private function __construct()
    {

    }
    static $temp;
    static function new_ob()
    {
    if(empty(self::$temp)){
    self::$temp = new cat();
    }
    return self::$temp;
    }
    function speak(){
    return "喵喵喵";
    }
    }
    //$mao = new cat();


    //如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。
    //$mao;
    //if (empty($mao)){
    // $mao = new cat();
    //}
    // $xxx = $mao;

    $mao = cat::new_ob();
    $mao2 = cat::new_ob();
    //给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。
    $mao->name = "py";







    2.工厂模式。
    //抽象类作为基类,其他都是他的拓展。
    abstract class jsq
    {
    public $a;
    public $b;

    function yunsuan(){
    }
    }
    //此为拓展
    class jiafa extends jsq
    {
    function yunsuan()
    {
    //parent::yunsuan(); // TODO: Change the autogenerated stub
    return $this ->a+$this->b;
    }
    }
    class jianfa extends jsq
    {
    function yuansuan(){
    return $this->a-$this->b;
    }
    }
    class factory
    {
    static function create($x){
    switch ($x){
    case "+":
    return new jiafa();
    break;
    case "-":
    return new jianfa();
    break;
    }
    }
    }
    //$j1 = new jiafa();
    //$j1->a = 1;
    //$j1->b = 2;
    //$j1->yunsuan();

    //尽量避免实例化对象,采用静态方法获取。
    $jf = factory::create("+");
    $jf->a = 1;
    $jf->b = 2;
    echo $jf->yunsuan();
     
  • 相关阅读:
    plsql调试存储过程卡住的原因以及处理
    JavaWeb三大组件(Servlet、Filter、Listener)的区别
    单点登录原理
    Oracle 导表异常处理方案 (解决空表导出出错问题)
    在Oracle中删除用户时提示:ORACLE无法删除当前连接用户
    VisualSvn的权限管理
    MySql常用命令总结
    Oracle 常用SQL
    参数
    java
  • 原文地址:https://www.cnblogs.com/GP1014336455/p/7675791.html
Copyright © 2011-2022 走看看