public class ViewJump{ private static ViewPath[] viewPath = null; //路径池,系统多处使用,静态但私有,因为供内部用
private ViewJump(){} //私有构造方法,辅助类只提供静态方法 private static int find(JPanel pnl); //寻找给定的Panel是否在已有路径中,私有 private static int newPath(JPanel myPanel,BaseView myView); //建立一个新路径,私有 /** * 每个类需要使用该辅助类时都需要第一步注册自己,然后才能做其他操作 * 返回一个注册码id,辅助类需要使用这个注册码进行其他操作 */ public static int registerPath(JPanel myPanel,BaseView myView); /** * 设立下一个界面. */ public static void setNext(int id,JPanel aim); /** * 回到上一个界面 */ public static void back(int id); /** * 回到第一个界面 */ public static void backHome(int id); /** * 跳转到下一个界面 */ public static void jump(int id); } 完成这样一个类的代码量并不多,一百多行,但是却使得用户完全脱离了处理不同界面的烦恼.稍后会把该类的源码附上,值得一提的是,这个类的实现固然可以用到类似的实现当中,但是如果用户的界面结构并不是如此搭建,你就需要更改参数类型了.如果能把这些抽象出来,得到一个抽象类或接口,参数用Object类型.用户根据自己的需要去实现这些方法,岂不妙哉!
使用这个类,你可以简便的多的完成诸如上面的任务:
OneView中:
public void jump(){ MyView myView = new MyView(); int id = ViewJump.registerPath(this.xxPanel,this); ViewJump.setNext(id,myView.getPanel()); ViewJump.jump(id); } MyView中退回的部分:
protected void goBack(){ int id = ViewJump.registerPath(this.myPanel,this); ViewJump.back(id); } 天哪,这并不神奇,600行代码仅仅用了两行就实现了!