学习常见的设计模式&数据结构

3种基本的设计模式:

工厂模式:使用工厂方法或者类来生成对象,避免在代码中过多的New对象
1 //工厂模式就是专门用于创建对象的类或方法,比如说有很多数据库的时候:MySQl操作类和Oracle操作类..等等,我们可以直接创建一个DBFactory类来实例化不同的数据库类。
class DBFactory{
  public static function createDbObject($class){
    $db = new $class; //在提前写好自动加载的前提下
    return $db; //记得return
  }
}
单例模式:使用某个类的对象仅允许创建一次
1 //设置当前类的__construct方法为private(私有)时外部不能直接实例化
2 //调用方法: 在类中定义getInstance方法来实例化自身
注册树模式:全局共享和交换对象
1 //注册树模式,也可以叫注册模式或者注册器模式,但是注册树模式能够更加形象的体现出该模式的特性
2 //将已注册的对象放在注册树上,需要的时候直接去取,不需要的时候从注册树上删除。

 

 

Spl扩展:

 1 //栈 先进后出
 2 //$stack = new SplStack();
 3 //$stack->push('Hello1');
 4 //$stack->push('Hello2');
 5 //echo $stack->pop();
 6 //echo $stack->pop();
 7 
 8 //队列 先进先出
 9 //$queue = new SplQueue();
10 //$queue->enqueue('data1');
11 //$queue->enqueue('data2');
12 //echo $queue->dequeue();
13 //echo $queue->dequeue();
14 
15 //堆
16 //$heap = new SplMinHeap();
17 //$heap->insert('data1');
18 //$heap->insert('data2');
19 //echo $heap->extract();
20 //echo $heap->extract();
21 
22 //规定长度数组 未定义为空
23 //$array = new SplFixedArray(10);
24 //$array[0] = 'key0';
25 //$array[9] = 'key1';
26 //var_dump($array);

如何实现链式操作:

$db->where()->order();
1 /*在类方法中加入return $this;*/
2 class database{
3     function where($where){
4         return $this;
5     }
6     function order($order){
7         return $this;
8     }
9 }

 常用魔术方法:

 1 function __set($key,$value) //设定属性不存在时调用
 2 
 3 function __get($key) //读取属性不存在时调用
 4 
 5 function __call($name, $arguments) //调用方法不存在时调用
 6 
 7 function __callStatic($name, $arguments) //调用静态方法不存在时调用
 8 
 9 function __toString() //类被当成字符串时应调用
10 
11 function __invoke() //当尝试以调用函数的方式调用一个对象时调用

 

转载于:https://www.cnblogs.com/Fres/p/5579421.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值