设计模式--观察者模式
来源:互联网 发布:淘宝卖家图教小龙虾 编辑:程序博客网 时间:2024/06/13 02:22
以下是自学it网--中级班上课笔记
网址:www.zixue.it
/*考虑如下场景:1次密码错,提醒重登陆2次错,出验证码5次错,验证码变复杂10次错,锁死账号常规思路:当判断用户名/密码不匹配后 { if(错) { 次数+1 } if(次数==1) { } else if(次数==2){ } else { }.... .... 这显然不合理}判断用户名/密码 正确与否 这属于登陆类登陆成功/失败,进行奖励/惩罚 属于奖惩类.*/interface Observer { function update($obj);}interface Post { function attach($key,$obj); function detach($key); function noticefy();}class User implements Post { public $state = null; public $lastlogin = 0; protected $observers = array(); public function attach($key,$obj) { $this->observers[$key] = $obj; } public function detach($key) { unset($this->observers[$key]); } public function noticefy() { foreach($this->observers as $obj) { $obj->update($this); } } public function Login() { $this->state = rand(0,1); // 返回0 代表用户名/密码错; 返回1,登陆成功 // 通知正在监听我的所有对象 $this->noticefy(); return $this->state; }}class Log implements Observer{ public function update($obj) { // 日志分析了 echo $obj->state?'加1分,记录':'错1次,记录并分析'; echo '<br />'; }}class Biz implements Observer{ public function update($obj) { echo (time() - $obj->lastlogin) > 1000?'好久没来了':'优质客户'; }}$user = new User();$log = new log();$biz = new Biz();$user->attach('log',$log);$user->attach('biz',$biz);//======client端的事了=====//for($i=1;$i<10;$i++) { $user->login(); echo '<hr />';}
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- Qt C++ memento模式
- 深入Ubuntu内部--SHELL使用和编程
- 什么是dns
- 一只小拉布拉多犬是如何帮我们卖软件的
- ACE_Time_Value使用注意事项(续)
- 设计模式--观察者模式
- 分布式文件系统介绍( MooseFS )
- Linux下使用system()函数一定要谨慎
- SHELL命令之chown
- sudo出现sudo:must be setuid root问题的解决方法
- FMDB增删改查
- 记录Objective-C中所有消息
- Nuget--基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
- linux 误修改 /etc/sudoers 的恢复办法