作这个习作的时候并不知道有设计模式这回事情。之后了解了,才顿悟。
所谓的设计模式我认为并不是单独提出来的一门技术。
而是对编写设计软件经验的一些总结,综合,提炼。
这个习作的意图是:
设计一个颜色控件(MyColorChooser),并应用于窗体(Test).达到调控窗体背景色的目的
完整的UML图
运行效果图
现在和正统的Media模式比较下
Mediator(就是我的Mylistener接口)被ConcreteMediator实现(就是我的Test)
ConcreteMediator和Colleague是包含关系(就是我的MyColorChooser)
Colleague和Mediator是包含关系
Mediator的官方定义:
用一个中介对象来封装一系列关于对象交互行为.
意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互
解释
定义里指的中介对象是mediator(interface)
定义里指的一系列对象是指colleague和ConcreteMediator
定义里说的不需要显示的相互引用,使其耦合松散。可以这样理解:
定义里说的交互就是好比Class A要操作Class B ,Class B也要操作Class A。可以简单的写成
class a{
new b().function();
}
class b{
new a().function();
}
但是这样一来问题就来了如何复用。如果出现一个Class C,难道要修改程序吗。
这个就是所谓的耦合问题(我猜得 哈哈)
如果采用mediator模式就能较好的解决问题。
比如习作中的控件(MyColorChooser)复用时就不需要任何改动