啥都不说,先贴张图
设计原则:1,找出程序中固定不变的方面,然后将其和变化的方面分离。2,针对接口编程,而不是针对实现编程。3,多用组合,少用继承。
那么怎么去理解这个设计模式呢?有人用打仗的设计模式,我也来理解理解。
是的,间谍,以前称细作,战国称义报。
如果,王剪想知道项燕大军的部署,就马上派出了间谍混进了项燕的60万大军中?当然不是,应该是两国建立外交(商家入国)的时候,就派出了大量的间谍(义报),这叫做预先计划!打战时才派间谍(斥候),那容易败露(有bug,不容易拓展)
怎么理解王剪和间谍之间的关系,间谍和项燕之间的关系呢?
我认为这里有三个接口
I燕国 、I间谍、I秦国
同时有行为组合(这些可以自己定义接口)
I监视个人信息、I监视大军动向 等等等。
不变的部分
1,观察者和被观察的关联
2,被观察者的信息更新,会自动通知观察者(如果是间谍,应该是需要间谍去主动获取,也就是put/get的差别)
变化的
1,观察的主题
2,观察者的数量
观察者和主题是可以集一身。
也就是既可以是观察者,也可以是主题。
别以为你是男猪脚/女猪脚,其实你是个跑龙套的,只有多点去别人的人生里面跑龙套,你才有机会成为跑龙套王。