面向对象最后部分设计模式

//单例模式

//一个类只能够实例化一个对象

class  Ren

{

  public  static $dx;

 

  private function  __construct()

  {

  }

  public static function DuiXiang()

  {

     if(empty(self::$dx))

           {

      self::$dx=new Ren;

    }

    return self::$dx;

  }

}

$r=Ren::DuiXiang();

$a=Ren::DuiXiang();

$r->name="单大源";

echo   $a->name;

  

 

//为了使一个类只能实例化出一个对象,就需要在类里面定义个私有的构造函数。定义后此时一个对象也没法造了

//采取的办法就是 在这个类里面再定义个方法来间接访问。

//这个DuiXiang()方法里面只要过来调用,我就返回一个实例化对象的人。

//工厂模式

class  YunSuan

{

  public  $a;

  public  $b;

  public  function  jia()          //建一个加的方法

  {

     echo $this->a+$this->b;         //将a和b这两个变量的值相加

    } 

  public  function  jian()          //再建一个减的方法

  {

    echo  $this->a-$this->b;        //将这两个变量的值相减

  }

}

//另一种方法

class  YunSuan              //建一个运算的父类里面包含变量a还有变量b

{

  public  $a;

  public  $b;

  

  public  function  SuanFa()            //定义一个算法的函数

  {

  }

}

class  jia  extends  YunSuan            //建一个加的子类来继承父类

{

  function   suan()

  {

    return  $this->a+$this->b;

  }

}

class  jian   extends  YuanSuan           //建一个减的类来继承父类

{

  function  suan()

  {

    return  $this->a-$this->b;          //将两个变量进行计算

  }

}

$s=new jia;

$s->a=10;

$s->b=100;

echo  $s->suan();

//工厂类

class  gongchang

{

  static  function ShengChan($f)

  {

    swich($f)

    {

      case "+";

        return  new  Jia();

        break;

      case "-";

        return  new  Jian();

        break;

    }

  }

}

$r = GongChang::ShengChan("+");

$r->a=10;

$r->b=5;

echo  $r->Suan;

原文地址:https://www.cnblogs.com/shandayuan/p/6861453.html