I want to use observer pattern for a logging system.
We have got logObservers
and logObservables
.
The class that will have to log something will implement iLogObservable
and include these methods:
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);
}
}
Then I noticed, that a lot of classes that will use logging will have these methods and I have to copy paste. So isn't it better to have these methods in a class I call LogObservable
or just Log
and then use strategy (instantiate this class inside all classes that will have to log). When I change the methods in Log
, all logObservables
will be affected.
However, I have not seen anyone use observer pattern with strategy pattern yet, but it seems to be very efficient and remove the duplications.
What do you think?