代码为示意代码,真实代码还有更多细节需要处理
是的,就这么简单。我们看到系统正常的工作了。也许你会问,那它是什么模式呢?我前面提过它是一种模式来着的。是的。它应该是组合模式(Composite Pattern)的一种退化形式。那为什么说他是退化的形式呢?我们先来看一下,组合模式的定义:
合成(Composite)模型模式属于对象的结构模式[GOF95],有时又叫做部分-整体(Part-Whole)模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以客户端将单纯元素与复合元素同等看待。
引用自《Java与模式》阎宏
从这个定义可以看出合成模式大致有三个特点,一具用两种对象,简单对象和复杂对象,但两种对象对客户程序具有相同接口,二具有层次结构。三具有递归特性。
从这些条件看来,我们的系统确实简单的多,对于客户程序来说,完全不知道有复杂对象,由于工厂的介入,系统不会有递归的情况出现,并且,对于该系统也没有递归的要求。其实,这个输出系统是组合模式,工厂模式,及宽窄接口方式综合的来解决问题的。若上来就硬套一种模式的话,一定会带来很大的烦麻。