gpt4 book ai didi

design-patterns - 观察者模式策略?

转载 作者:行者123 更新时间:2023-12-02 02:33:38 25 4
gpt4 key购买 nike

我想为日志系统使用观察者模式。

我们有 logObserverslogObservables

必须记录某些内容的类将实现 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 都会受到影响。

但是,我还没有看到任何人将观察者模式与策略模式结合使用,但它似乎非常有效并且消除了重复。

你怎么看?

最佳答案

在支持多重继承的语言中,支持此功能的对象从支持这些方法的 Observable 类继承并不罕见。

我从来没有遇到过使用聚合来支持这一点的解决方案,这正是您所描述的,但是鉴于 PHP 不支持多重继承,这对我来说听起来像是一个合理的解决方法。

关于design-patterns - 观察者模式策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2781518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com