PHP 设计模式 (未完待续)

PHP 设计模式

一、 OOP介绍
  1. 真理形成的两大要素----事实和抽象
  2. 不要把我们的宝贵的遗产视同儿戏,请珍视这个有序而自由的伟大国度,因为,如果我们蹒跚跌倒,如今的自由和文明将走向毁灭.
  3. 每人都会得到遗传给他的一切,他继承丰富的遗产.
二、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
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值