我希望为日志系统使用观察者模式。
我们有logObservers
和logObservables
。
将要记录某些内容的类将实现iLogObservable
并包含以下方法:
private $logObservers = array();
public function addLogObserver($logObserver) {
$this->logObservers[] = $logObserver;
}
public function removeLogObserver($logObserver) {
this->logObservers[] = $logObserver;
}
public function write($type, $message) {
foreach($this->logObservers as $logObserver) {
$logObserver->log($level, $message);
}
}
然后我注意到,很多将使用日志记录的类都具有这些方法,我必须复制并粘贴。因此,是否更好地将这些方法放在我称之为LogObservable
或Log
的类中,然后使用策略(在所有需要记录日志的类中实例化此类)。当我更改Log
中的方法时,所有的logObservables
都会受到影响。
然而,我还没有看到任何人将观察者模式与策略模式结合使用,但它似乎非常有效,并且可以消除冗余。
你认为呢?