当前位置:首页 > 儿童诗歌 > 文章

PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】 传统节日的文化

日期:2019-06-15?|? 作者:本站原创?|? 149 人围观!

PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】 传统节日的文化

使用工厂模式使得在调用方法时变得更容易,因为它只有一个类和一个方法,若没有使用工厂模式,则要在调用时决定应该调用哪个类和哪个方法;使用工厂模式还使得未来对应用程序做改变时更加容易,比如要增加一种形状的支持,只需要修改工厂类中的create()一个方法,而没有使用工厂模式,则要修改调用形状的代码块。

观察者模式为您提供了避免组件之间紧密耦合的另一种方法。

该模式非常简单:一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。

当可观察的对象更改时,它会将消息发送到已注册的观察者。 这些观察者使用该信息执行的操作与可观察的对象无关。

结果是对象可以相互对话,而不必了解原因。 一个简单的示例:当听众在收听电台时(即电台加入一个新听众),它将发送出一条提示消息,通过发送消息的日志观察者可以观察这些消息。

php//观察者接口interfaceIObserver{functiononListen($sender,$args);functiongetName();}//可被观察接口interfaceIObservable{functionaddObserver($observer);functionremoveObserver($observer_name);}//观察者类abstractclassObserverimplementsIObserver{protected$name;publicfunctiongetName(){return$this-name;}}//可被观察类classObservableimplementsIObservable{protected$observers=array();publicfunctionaddObserver($observer){if(!($observerinstanceofIObserver)){return;}$this-observers[]=$observer;}publicfunctionremoveObserver($observer_name){foreach($this-observersas$index=$observer){if($observer-getName()===$observer_name){array_splice($this-observers,$index,1);return;}}}}//模拟一个可以被观察的类:RadioStationclassRadioStationextendsObservable{publicfunctionaddListener($listener){foreach($this-observersas$observer){$observer-onListen($this,$listener);}}}//模拟一个观察者类classRadioStationLoggerextendsObserver{protected$name=logger;publicfunctiononListen($sender,$args){echo$args,/}}//模拟另外一个观察者类classOtherObserverextendsObserver{protected$name=other;publicfunctiononListen($sender,$args){echootherobserver..br/}}$rs=newRadioStation();//注入观察者$rs-addObserver(newRadioStationLogger());$rs-addObserver(newOtherObserver());//移除观察者$rs-removeObserver(other);//可以看到观察到的信息$rs-addListener(cctv);。


现代文学提供的文章均由网友转载于网络,若本站转载中的文章侵犯了您的权益,请与本站管理员联系. Copyright © 2006-2019 www.hf0666.com现代文学-文学期刊 All Rights Reserved.

返回顶部