淄博网站优化公司网络工程就业前景分析
淄博网站优化公司,网络工程就业前景分析,wordpress子分类,住房和城乡建设部网站下载一、观察者模式 当一个对象状态发生改变时#xff0c;依赖它的对象全部会收到通知#xff0c;并自动更新 场景#xff1a;一个事件发生后#xff0c;要执行一连串更新操作。传统的编程方式#xff0c;就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后#x…一、观察者模式 当一个对象状态发生改变时依赖它的对象全部会收到通知并自动更新 场景一个事件发生后要执行一连串更新操作。传统的编程方式就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后代码会变得难以维护。这种方式是藕合的侵入式的增加新的逻辑需要修改事件主体的代码 观察者模式实现了低耦合非侵入式的通知与更新机制
?php
interface watcher{public function update();
}
abstract class watch{private $watchArr array();public function addWatchArr(watcher $watcher){$this-watchArr[] $watcher;}public function notify(){foreach($this-watchArr as $value){$value-update();}}
}
class watcher1 implements watcher{public function update(){echo update watcher1;}
}
class watcher2 implements watcher{public function update(){echo update watcher2;}
}
class main extends watch{public function test(){echo update1;$watcher1 new watcher1();$watcher2 new watcher2();$this-addWatchArr($watcher1);$this-addWatchArr($watcher2);$this-notify();
}
}
$main new main();
$main-test();
上面的interface{} 为每个实例提供了统一的方法那么抽象方法提供了添加实例以及统一遍历实例的方法。
二、适配器模式 适配器模式可以将截然不同的函数接口封装成统一的API 实际应用举例PHP 的数据库操作有mysqlmysqli 等可以通过适配器模式统一成一致
interface database{public function connect();public function query();
public function delete();
}
class mysql implements database{public function connect(){
}
public function query(){
}
public function delete(){}
} 三、策略模式 策略模式将一组特定的行为和算法封装成类以适应某些特定的上下文环境这种模式就是策略模式 使用策略模式可以实现IOC依赖倒置、控制反转
?php interface advertise{public function show();
}
class man implements advertise{ public function show(){echo 显示man;}
}
class woman implements advertise{public function show(){echo 显示woman;}
}
class showindex{private $advertise;public function addObject(advertise $advertise){$this-advertise $advertise;}public function index(){$this-advertise-show();}
}
$showindex new showindex();
$women new woman();
$showindex-addObject($women);
$showindex-index();
四、装饰器模式 装饰器模式可以动态地添加修改类的功能 一个类提供了一项功能如果修改并添加额外的功能传统的编程模式需要写一个子类继承它并重新实现类的方法 使用装饰器模式仅需在运行时添加一个装饰器对象即可实现可以实现最大的灵活性
interface drawInterface{public function beforeDraw();public function afterDraw();
}
class Draw{
private $addDraw array();public function addDrwa(drawInterface $draw){$this-addDraw[] $draw;}private function beforeDraw(){foreach($this-addDraw as $row){$row-beforeDraw();}}
private function afterDraw(){$t array_reverse($this-addDraw);foreach($t as $row){$row-afterDraw();}}public function show(){$this-beforeDraw();echo *;$this-afterDraw();}
}
class A implements drawInterface{public function beforeDraw(){echo h1;}public function afterDraw(){echo /h1;}
}
class B implements drawInterface{public function beforeDraw(){echo h2;}public function afterDraw(){echo /h2;}
}
$draw new Draw();
$draw-addDrwa(new A());
$draw-addDrwa(new B());
$draw-show();
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91165.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!