框架的感悟

来源:互联网 发布:python tile 编辑:程序博客网 时间:2024/06/05 23:55

对于struts1框架的感悟:

对于核心的Action.class来说,最主要的就是返回execute方法,该方法返回ActionForward,所以我们应当首先关注这个ActionForward是什么


package org.apache.struts.config;
import java.io.Serializable;
public class ForwardConfig
    implements Serializable
{
            public ForwardConfig()
            {

 configured = false;

contextRelative = false;

 name = null;

path = null;

  redirect = false;
            }

以上无参的构造函数,默认使值都为未改变的初始状态,以便用户填充值。

具备几个有参数的构造函数:

public ForwardConfig(String name, String path, boolean redirect)
            {

  configured = false;
        contextRelative = false;
   this.name = null;
    this.path = null;
  this.redirect = false;
    setName(name);
 setPath(path);
  setRedirect(redirect);

              }

具体其他的就不多描述了。都是对于configured(是否配置),name,path等的get,set方法,

 public String toString()
            {

   StringBuffer sb = new StringBuffer("ForwardConfig[");
      sb.append("name=");
     sb.append(name);
    sb.append(",path=");
      sb.append(path);
       sb.append(",redirect=");
       sb.append(redirect);
      sb.append(",contextRelative=");
     sb.append(contextRelative);
       sb.append("]");
       return sb.toString();

}

 protected boolean configured;
            protected boolean contextRelative;
            protected String name;
            protected String path;
            protected boolean redirect;


以上就是ForwardConfig的主要作用



让我们回到Action.class中的execute方法。

该方法主要就是返回ActionForward,该ActionForward是ForwardConfig的二级封装







看代码的感悟:

对于java来说,我们在任何时候阅读代码的时候要坚持:oo原则即 object-oriented原则,我们创建的任何代码展现在我们面前的只是表示形式,但是要知道实际运行的时候往往是代码的实例,所以要避免一个误区,不要局限于代码本身去看代码,比如private HashMap service, getXXX(Param name){return sevice.get(name)};即在实际运行中往往有该类的实例,这个实例中service中包含多个键值队,所以我们以面向对象的观点去看代码,就能避免很多的误区。


对于任何时候,我们在审视一个类的时候,首先的时候就应该想到它的构造方法,因为我们以面向对象的模式去看待与编写java代码,那么既然是对象,就必须是活灵活现的对象,必须包含着一个必然的步骤:构造,所以我们用对象实例来区分代码和实例本身,同时以构造函数去审视代码字面意义上做的构造的事情,这样基本上就可以观察出代码的核心意义


对于java来说,他的一些其他的东西其实都是附属,都是在为我们构建对象进行服务,比如声明的异常,数据类型等等都是为我们构建这个对象提供服务,所以最佳的编写代码的方式是从对象入手,以编写对象的角度去返归到代码本身去构建丰富的类。



其实更高级别的程序员就是可以,深化细节到具体的代码片段中,去联想是否有其他组件提供类似的代码服务,从而去使用该框架或者组件,这是从低级到高级的转变过程。


其实写代码和做人做事是一个道理,从面向对象的角度出发,定义一个接口,却有很多个类去实现这个接口,你所要找的方法不一定就在一个实现该接口的类中出现,可能在别的类中实现,这样就实现了多样化即多态

任何时刻允许异常的出现,满足了现实世界中的偶然性,因为可能并不是所有事情都是绝对的,总有失算的那一刹那。

父类中定义的方法却可能在多个类型的子类中被重写了,也满足了现实世界中的继承特点。

如果发现在一个类中,没有创建实例或者没有继承父类就出现了直接书写方法名的情况,那么不正好说明了这个方法正是这个类自己所有吗?显而易见,这个方法在该类就在该类被声明了。


java.lang.UnsupportedClassVersionError 错误的原因

主要是由于JDK版本导致的错误,只要出现ClassLoader的问题,都是由于JDK版本不一致,即编译用的JDK和实际用的JDK不一致导致的错误。


现在java编程中经常碰到ClassCastException 错误,ClassCastException 是 JVM 在检测到两个类型间的转换不兼容时引发的运行时异常。


关注于StringTokenizer   Properties

原创粉丝点击