ABSTRACT SERVER
上图,一个ProcessMonitor对象负责监控ipass server的进程,这个设计依赖了具体实现,在使用ProcessMonitor的地方都要带上ipass process。
这时可以应用Abstract Server模式避免依赖具体类。
上图中,引入了Monitorable接口,这样ProcessMonitor就可以控制任何实现了Monitorable接口的对象。
ADAPTER
接上文,如果存在第三方的SecurityProcess,并且需要ProcessMonitor来监控它,因为得不到SecurityProcess的源程序,或者不能更改其的源程序,此时,就用到了Adapter模式。
适配器SecurityProcessAdapter实现Monitorable接口,并代理SecurityProcess,只要构造了合适的适配器,SecurityProcess中不需要有start()和stop()方法,SecurityProcessAdapter会进行适配。这个是对象形式的adapter。
上图为类形式的适配器,适配器同时继承了Monitorable接口和SecurityProcess类,它比对象形式的适配器更高效,但是代价是使用了具有高耦合度的继承。