下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

寄生型设计模式在Swing应用开发中的实践(5)

作者:课课家教育     来源: http://www.kokojia.com点击数:878发布时间: 2016-02-03 15:37:42

标签: javajava辅助类java寄生模式

大神带你学编程,欢迎选课

  寄生模式的导出

  根据上面的对辅助类内存泄露方案的处 理,可以推广到所有存在寄生特征的设计场景中进行通用化,进而定义寄生模式。

  寄生模式结构示意图

寄生型设计模式在Swing应用开发中的实践(5)_java_java辅助类_课课家

  宿主对象:为其他对象提供所需服务的。调用寄生对象提供服务并为它提供一个钩子,以前面章节的实例对应可以理解 为,GUIEngine 是宿主提供 Outdoor_UPS.XML 文件描述的界面创建服务,实际是调用对应的辅助类来实现界面组件的访问 服务的,辅助类会调用 GUIEngine 类,同样 GUIEngine 也会挂接辅助类。

  寄生对象:为宿主对象提供服务,如:为真实对象提供服务的模拟等;此处可以理解为,辅助类为界面对象提供模拟服 务,使得操作起来更方面和符合习惯。

  开关变量:确定寄生对象如何提供服务的变量,我们可以认为其实宿主类本身是可以提供服务的,但有寄生类来提供更 为方便,但在某些情况下,以上文的案例,如果仅仅只需要临时访问某个界面的很少数量的控件,而界面本身控件数量很多 ,如果还创建寄生类就不太合算了,此时可以由宿主类直接提供服务;

  创建者:创建宿主对象的对象,它将开关变量传递给寄生变量以动态决定谁提供服务;

  客户对象:使用宿主对象服务的对象,当开关变量被设置,则由寄生对象提供服务;

  以前面的案例为例,我们想访问并设置 UPS TYPE 界面中文本输入控件的值为 100,首先创建一个 GUIEngine 对象,通 过开关变量,设置是否创建辅助界面类,如果创建,可以通过 UPSTypeHelper 来完成对界面值的设置了。

  寄 生模式对象调用顺序

  我们来看代码的实现过程

  清单 8. 寄 生模式的实现实例

  public class Client {

  private Create ct;

  public Client(){

  ct=new Create("Outdoor_UPS.xml",true );/* 打开开关辅助对象提供服务 */

  }

  public boolean SetUPSTypeValue(int typeValue)

  {

  try {

  ct.getServiceObj().setText(String.valueOf (typeValue));

  return true ;

  }catch (Exception ex){

  ex.printStackTrace();

  return false ;

  }

  }

  /**

  * @param args

  */

  public static void main(String[] args) {

  Client clt=new Client();

  System.out .println(clt.SetUPSTypeValue(100));

  }

  }

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程