你可能会好奇框架是如何工作的,我会创建一个简单的框架来演示一下。
框架的目标
首先,为什么我们需要框架而不是库呢?框架的目标是定义一个让开发者实现基于个性化需求的某些功能的过程,换句话说,框架定义了骨架而开发者进行填补。
简单的框架
在下面的例子中,前三个类是框架的一部分,第四个类是该框架的客户端代码。
Main.java是框架的入口点,不能修改。
1 //imagine this is the entry point for a framework,it can not be changed
2 public class Main{
3 public static void main(String[] args){
4 Human h=new Human(new Walk());
5 h.doMove();
6 }
7 }
Move.java是钩子,可以让开发者基于他们的需求来定义/继承函数。
1 public abstract class Move{
2 public abstract void action();
3 }
Human.java是模板,体现了框架是如何工作的。
1 public class Human{
2 private Move move;
3 public Human(Move m){
4 this.move=m;
5 }
6 public void doMove(){
7 this.move.action();
8 }
9 }
这个简单的框架允许和需要开发者去继承"Move"这个类,事实上,在这个框架里,action方法是开发者唯一能够改变的。
在内部实现中,可以编写不同的"action"达到不同的目的。比如下面的例子是打印出"5 miles per hour",当然,你也可以改为"50 miles per hour"。
1 public class Walk extend Move{
2 @Override
3 public void action(){
4 System.out.println("5 miles per hour - it is slow!");
5 }
6 }
总结
这个例子只是展示了一个简单的模板和钩子是如何工作的,一个实用的框架比这更复杂,不仅包含了模板-实例之间的关系,而且对于如何有效的提高性能和程序可用性也是很复杂的过程。