1 .Adapter模式:swing的jtable组件应用是Adapter模式的一个很好的例子,jtable组件通过调用tableModel接口中定义的方法获取表格的相关信息,这样就使得我们可以很容易地写出一个适配器类从域对象(如多个rocket类实例对象)中获取用于填充表格的数据.
若要使用jtable,我们通常写一个对歇脚适配器类,由它将jtable对象上的的操作委托给某个现有的类的多个实例.jtable类有两方面原因导致我们不能使用类适配器,第一,表适配器类必须扩展abstractTaleModel类,因此它就不能再扩展现在有的类,第二,jtable类需要收集多个对象的数据,而只有对象适配器类才可以对多个对象进行适配.
当设计自己的系统时,要考虑从使用Adapter模式的软件架构中所带来的好处和灵活性.
2 .Facade(外观)模式:
工具包的可复用性会带来一个问题:面向对象子系统中的类应用类型会很多,这就会造成许多选项,希望使用工具包的开发者可能并不知道从哪里开始.集成开发环境(IDE),比如:Eclipse,能够让开发者从复杂的开发工具包中摆脱出来,但是IDE有时候会生成大量的代码,这可能让开发者疲于对付.
另一种简化途径是使用工具包的提供的外面-----使用少量的代码提供一个典型的.在类库中没有虚饰用法的类,facade模式就是一个功能介于工具包和完整应用程序之间的类,可提供包或子系统中类的简化功能.
facade模式的目的在于提供一个接口,使子系统更加容易使用.
外观类,工具类,示例类.
外观类的方法可能都是静态方法,这种情况下,外观类在UML中被称作工具类.
示例类与外观类的两点区别:
示例类通常是一个能够独立运行的应用程序,而外观类通常不是.
示例类通常会包含示例数据,而外观类不会.
外观类通常是可配置的,而示例类不是.
外观类旨在提供复用.而示例类不是.
外观类旨在应用于实际环境中,而示例类不是.