PHP 设计模式
一、 OOP介绍
- 真理形成的两大要素----事实和抽象
- 不要把我们的宝贵的遗产视同儿戏,请珍视这个有序而自由的伟大国度,因为,如果我们蹒跚跌倒,如今的自由和文明将走向毁灭.
- 每人都会得到遗传给他的一切,他继承丰富的遗产.
二、1 抽象类
<?php
class OneTrick
{
private $storeHere;
public function trick($input)
{
$this->storeHere = $input;
return $this->storeHere;
}
{
$doIt = new OneTrick();
$dataRow = $doIt ->trick("test");
echo $dataRow;
?>
工厂模式
工厂模式是一种创建型设计模式 对于工厂模式要创建的东西是一个产品,这个产品与创建它的类之间不存在绑定
何时使用工厂模式
在某个程度上讲,如何选择设计模式取决于你希望改变什么,如果实例化的子类可能变化,就要使用工厂方法模式
- 例子
<?php
//createor.php
abstract class Creator{
protected function factoryMethod();
public function startFactory(){
$mfg = $this->factoryMethod();
return $mfg;
}
}
//Product
interface Product
{
public function getProperties();
}
TextProduct implements Product{
private $mfgProduct;
public function getProperties(){
$this->mfgProduct = "文本产品";
return $this->mfgProduct;
}
}
TextFactory extends Creator {
protected function factoryMethod()
{
$product = new TextProduct();
return $product->getPorperties();
}
}
//Client.php
class Client{
private $someTextObject;
public function __construct()
{
$this->someTextObject = new TextFactory();
echo $this->someTextObject->startFactory();
}
}
单例模式
一个无法从其自身外部创建实例的类
/**
* 单例模式
*/
class PerModel
{
static private $instance;
private $porps;
private function __construct()
{
}
static public function get_instance()
{
if(!self::$instance){ //判断对象是否实例化
self::$instance = new self();
}
return self::$instance;
}
public function setPorps($data)
{
echo $data;
}
private function __clone() //禁止clone
{
// TODO: Implement __clone() method.
}
}
$item = PerModel::get_instance();
//$item->setPorps(1);
$items = PerModel::get_instance();
if($item ===$items)
{
echo 1;
echo "\n";
}
原型设计模式
使用克隆技术来复制实例化对象
何时使用原型设计模式
如果一个项目要求你创建某个原型对象的多个实例 。 例如: 在关于进化发展的研究中,科学家 通常会使用果蝇作为研究对象,可以将雄性和雌性原型作为基础,变异则是某个雄性或雌性实例的克隆,因此 只需要完成两个实例化,然后就可以根据需要clone 多个变异,而不需要由具体类另外创建实例
- 例子
<?php