PHP设计模式
设计模式就是一些 编程的套路,不是具体的攻防动作,是为设计更好系统设计的解决方案。
面向对象的原则是 “组合优于继承”,因为组合可以以多种方式动态的处理任务。
虽然对象的组合会导致代码的可读性下降,但会让系统更加灵活,复用性更高。
设计模式是很多前辈花费大量精力总结的经验,是经过检验的高效的一系列对象组合方式。
共12种经典的设计模式Design Patterns in Java Tutorial
图说设计模式 PHP常用设计模式 1、单例模式指在整个应用中只有一个对象实例的设计模式class Single {
public $rand;
static private $instance; // 类直接调用
final private function __construct()
{ // private防止外部new
$this->rand = mt_rand(1, 100);
}
static public function getInstance()
{
if (!self::$instance) { // 判断$instance是否赋值
self::$instance = new self;
}
return self::$instance;
}
}
$obj1 = Single::getInstance();
$obj2 = Single::getInstance();
var_dump($obj1 === $obj2); // true
2、工厂模式指通过工厂类调用自身静态方法来生产对象实例的设计模式
//接单例模式代码
class FactoryClass
{
static public function factory() {
return Single::getInstance();
}
}
var_dump(FactoryClass::factory());
3、注册器模式指将对象注册到全局树上,可直接设置获取注销对象
class Register
{
static protected $objects; //全局树array
static public function set($alias, $object)
{
self::$objects[$alias] = $object; //设置
}
static public function get($alias)
{
return self::$objects[$alias]; //获取
}
static public function _unset($alias)
{
unset(self::$objects[$alias]); //注销
}
}
Register::set('rand', FactoryClass::factory()); //设置别名为rand的对象
print_r(Register::get('rand')); //获取别名为rand的对象
Register::_unset('rand'); //销毁别名为rand的对象
var_dump(Register::get('rand')); //Notice: Undefined index: rand
打印
[root@bogon test.cc]# php index.php
Single Object
(
[rand] => 9
)
NULL
4、适配器模式指将一个类的接口转换成客户期望的另一个类的接口,让原本接口不兼容的类合作无间。
适配器分为类适配器和对象适配器,类适配器采用“多继承”的实现方式,导致不良的高耦合,对象适配器采用“对象组合”的方式,更符合松耦合精神。
4.1 类适配器
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?