山河博客

PHP策略模式详解-PHP设计模式

山河博客
山河博客

大家好我是山河,今天跟大家来谈谈PHP设计模式中的PHP策略模式

策略模式特点:传递不同的参数调用不同的策略(方法)

话不多说了,直接上代码加深印象

<?php
class Walk {
	public function way() {
		echo '走着去<br>';
	}
}
class Bus {
	public function way() {
		echo '坐车去<br>';
	}
}
//策略模式
class Student {
	public function play($obj) {
		$obj->way();
	}
}
//测试
$stu=new Student;
$stu->play(new Walk());	//走着去
$stu->play(new Bus());	//坐车去

大家看完这段代码应该都明白了吧。

好了,文章结束,我是山河

山河博客

PHP工厂模式详解-PHP设计模式

山河博客
山河博客

大家好我是山河,今天我给大家谈一谈关于PHP的设计模式之工厂模式哈

工厂模式特点:传递不同的参数获取不同的对象

上代码加深理解

<?php
class ProductsA {
}
class ProductsB {	
}
//工厂模式
class ProductsFactory {
	public function create($num) {
		switch($num) {
			case 1:
				return new ProductsA;
			case 2:
				return new ProductsB;
			default:
				return null;
		}
	}
}
//测试
$factory=new ProductsFactory();
$obj1=$factory->create(1);
$obj2=$factory->create(2);
var_dump($obj1,$obj2); //object(ProductsA)#2 (0) { } object(ProductsB)#3 (0) { } 

通过上方代码可以看出来,将ProductsFactory对象实例化了之后,调用create方法,传递1就实例化ProductsA对象,传递2就实例化ProductsB对象。

这个就是PHP工厂模式。

好了,本文结束,我是山河。

山河博客

PHP单例模式详解-PHP设计模式

山河博客
山河博客

大家好我是山河,今天我给大家谈谈关于这个PHP的单例模式啊,

什么是单例模式?

单例模式要求:一个类只能有一个对象

应用场景:多次请求数据库只需要一个连接对象。

实现:三私一公

1、私有的静态属性用来保存对象的单例
2、私有的构造方法用来阻止在类的外部实例化
3、私有的__clone阻止在类的外部clone对象
4、公有的静态方法用来获取对象的单例

代码详解

<?php
//三私一公
class DB {
	//静态的属性用来保存对象的单例
	private static $instance;
	//私有的构造方法阻止在类的外部实例化
	private function __construct() {
		
	}
	//私有的__clone()阻止在类的外部clone对象
	private function __clone() {
		
	}
	public static function getInstance() {
		//保存的值不属于DB类的类型就实例化
		if(!self::$instance instanceof self)
			self::$instance=new self();
		return self::$instance;
	}
}
//测试
$db1=DB::getInstance();
$db2=DB::getInstance();
var_dump($db1,$db2);	//object(DB)#1 (0) { } object(DB)#1 (0) { } 

各位小伙伴,看完这篇教程,我相信大家是不是有所感悟呢?

好了,本篇文章到此结束,我是山河。