目录
一: 介绍设计模式
1.设计模式是一种成熟化的设计规范,用来完成特定的功能;
2.它提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题;
3.计模式并不一定就是一个类库或者第三方框架,它们更多的表现为一种思想并且广泛地应用在系统中;
4.它们也表现为一种模式或者模板,可以在多个不同的场景下用于解决问题;
5.设计模式可以用于加速开发,并且将很多大的想法或者设计以一种简单地方式实现;
6.当然,虽然设计模式在开发中很有作用,但是千万要避免在不适当的场景误用它们;
二: 单例模式
1.单例模式的定义:
只有一个实例(对象),每次只能产生一个对象 ;
2.单例模式的实现思路:
1).产生的对象的new和克隆方法在类的外部会产生多个对象,实现产生一个对象的目的,必须使它不能在类的外部使用new和clone的方法;
解决方案:
=> 私有化构造方法,禁止在类的外部使用new产生多个对象;
=> 私有化克隆方法,禁止在类的外部使用clone产生对象;
2).把产生对象在类外部的路给堵死了,怎么来产生对象?
解决方案:
=>进入类的内部产生对象,通过类来调用静态的方法来产生对象;
3).但是在外部可以多次调用静态方法,会产生多个不同的对象,可以在类的内部定义个静态属性保存所产生的对象,通过判断产生的对象是否是该类的对象;
=> 判断某个对象是否属于某个类 instanceof
单例模式(三私一公) :私有化构造方法、私有化克隆方法、私有化静态属性、公有化静态方法;
<?php
//设计模式中的单例模式,得到该类的唯一对象
class Single
{
//定义私有话的静态属性来保存生成的对象
private static $obj;
//私有化构造方法,禁止在类的外部使用new产生多个对象
private function __construct()
{
}
//私有化克隆的方法,禁止在类的外部使用clone产生对象
private function __clone()
{
}
/**
* 在类的内部产生对象的方法,又由于现在没有对象,只能使用类在外部来调用,必须是公有且静态;
*
* 静态属性只会初始化一次,如果说第一次实例化后的对象保存在静态属性中,那下次再调用该方
* 法时,静态属性中已经存在了该对象,不再new新的对象,直接返回静态属性中保存的对象;
*/
public static function getSingle()
{
if(!(self::$obj instanceof self))
{
self::$obj=new self();
}
return self::$obj;
}
}
//单例模式后怎么访问对象呢? 通过类名来获取对象
$obj=Single::getSingle();
var_dump($obj);
?>
三: 工厂模式
1.什么是工厂模式?
需要什么对象,就产生该类的对象
2. 实现思路:
必须提供类,必须保证类在内存中存在;
定义两个方法:一个是产生对象,另外一个是加载类到内存;