面向对象最后部分设计模式
//单例模式
//一个类只能够实例化一个对象
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;