现在我们使用的Java框架很多都是开源的,比如:Hibernate、Spring、Struts2、Jbpm、SiteMesh、IBATIS、EasyJWeb、Lucene、DWR等等。

然而,大家以为设计一个Java框架,貌似是一个很难以想象的事情。也许,你会非常好奇一个框架是如何实现。现在,我将做一个很简单的框架案例来说明那些框架的基本原理。(小弟不才,以下案例让您见笑了。^_^)

225428130.jpg


开始,我们应该明确框架是要做什么的,需要这个框架的什么功能。

Main.java是框架的入口,框架的实现与测试等操作有一个入口来执行,调用了我们需要的实现方法等。

//框架入口
public class Main {
    public static void main(String[] args) {
        //dog
        Animal animal = new Animal(new Dog());
        animal.doSleep();
        animal.doEat(); 
        //cat
        Animal animal1 = new Animal(new Cat());  
        animal1.doSleep();
        animal1.doEat(); 
    }
}


框架拥有的功能行为,所以必须定义一些抽象方法来给我们以后想要实现功能提供接口。

//定义行为抽象类

public abstract class DoAction {
    public abstract void doSleep();
    public abstract void doEat();
}


基类引用基类本应该拥有的行为,来调用基类的行为,为以后继承他的子类来实现属于他们想要的动作。

//Animal类

public class Animal {
    private DoAction doAction;
                                                                                                                                                                                                                                      
    public Animal(DoAction doAction){
        this.doAction= doAction;
    }
                                                                                                                                                                                                                                      
    public void doSleep(){
        this.doAction.doSleep();
    }
    public void doEat(){
        this.doAction.doEat();
    }

继承基类Animal,实现我们想要的功能,这样就是一般框架都是以这种方式来实现的。

//继承Animal类:Dog,Cat

public class Dog extends Animal {
                                                                                                                                                                                                       
    @Override
    public void doSleep() {
        // TODO Auto-generated method stub
        System.out.println("小狗狗困了,要睡觉觉了...");
    }
    @Override
    public void doEat() {
        // TODO Auto-generated method stub
        System.out.println("小狗狗肚子饿了,要吃饭    了...");
    }
}
public class Cat extends Animal {
                                                                                                                                                                                                       
    @Override
    public void doSleep() {
        // TODO Auto-generated method stub
        System.out.println("小猫咪困了,要睡觉觉了...");
    }
    @Override
    public void doEat() {
        // TODO Auto-generated method stub
        System.out.println("小猫咪肚子饿了,要吃饭    了...");
    }
}


定义好框架应有的需求,应有的功能等接口,我们以后只要实现并且调用它,就可以成为我们自己的框架了。

其实,这个模拟的框架是非常简单的,我只是示例了一下他的工作原理。

但是,一个真正成熟的框架是非常复杂的,涉及到的业务是很复杂的,而且涉及比较深层次的问题也不是那么容易解决的。其实,我们并不用怕开发设计一个框架是如何难,如何遥不可及,现在有一些比较牛的企业都会自己开发一套属于自己企业所需要的框架来帮助他们快速的开发软件,能够重载以前实现过的功能,这不就快速提高了开发进度了吗?


020008149.jpg


(ps:小弟不才,描述上或者方法上若有什么问题,请您提出来,好让我改进,大家一起学习吧!)