linz
- linz 赞了评论
怎样设置结束时间大于开始时间?
- linz 2018-10-10 已签到连续签到3天,获得了15个金钱
- linz 2018-10-09 已签到连续签到2天,获得了10个金钱
观察者模式,与不用观察者模式相比,除了多写了一堆的代码,其他并没体现出什么好处。
具体以你讲的例子来说:
但是,当系统变大的时候,这种方法马上面临难以扩展的问题,并且容易出错。
比如老王不想订阅了,我们需要改源代码。
比如又增加了一个客户,我们要去改源代码。
比如xxx,我们都需要改源代码。
这两个对象的耦合度太高了。$model = new Video();
$model->attach(new LaoWang());
$model->attach(new XiaoLi());
$model->attach(new ChuanPu());
$model->attach(new BingBing());
$model->new();与
$model = new Video();
$model->new();
LaoWang::update($model);
XiaoLi::update($model);
ChuanPu::update($model);
BingBing::update($model);两个代码相比,
前者观察者模式,并没有解决上面作者自己所提出来的那些问题:有需求变动,还是要改代码的,如果仔细看看,反而是观察者模式情况下,改动的代码还要更多。
具体来说(还是借用作者的例子):
“当我们再增加一个人加入 习大大 的时候,我们只需要增加一个习大大的观察者类,在实现的时候添加注册,而不需要去改Video类和其他的观察者类,将类之间的耦合降低了很多”
这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。
那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的。不知道作者如何解释。
这样做更好。做到了“开闭原则“
- linz 赞了回复
观察者模式,与不用观察者模式相比,除了多写了一堆的代码,其他并没体现出什么好处。
具体以你讲的例子来说:
但是,当系统变大的时候,这种方法马上面临难以扩展的问题,并且容易出错。
比如老王不想订阅了,我们需要改源代码。
比如又增加了一个客户,我们要去改源代码。
比如xxx,我们都需要改源代码。
这两个对象的耦合度太高了。$model = new Video();
$model->attach(new LaoWang());
$model->attach(new XiaoLi());
$model->attach(new ChuanPu());
$model->attach(new BingBing());
$model->new();与
$model = new Video();
$model->new();
LaoWang::update($model);
XiaoLi::update($model);
ChuanPu::update($model);
BingBing::update($model);两个代码相比,
前者观察者模式,并没有解决上面作者自己所提出来的那些问题:有需求变动,还是要改代码的,如果仔细看看,反而是观察者模式情况下,改动的代码还要更多。
具体来说(还是借用作者的例子):
“当我们再增加一个人加入 习大大 的时候,我们只需要增加一个习大大的观察者类,在实现的时候添加注册,而不需要去改Video类和其他的观察者类,将类之间的耦合降低了很多”
这里说了,增加习大大: 一要增加类,二要注册,其实还有个三,就是得触发。好处呢,是:不用改其他观察者类。
那么,不用观察者模式,如何?其实一样嘛,一要增加类,二是要调用。没了。是不是更简单?
上面说的好处:不用改其他类,普通的调用一样不用改其他类嘛,所以这个好处也不是优势,不存在的。不知道作者如何解释。
- linz 2018-10-08 已签到连续签到1天,获得了5个金钱