原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/
原文和翻譯都只是參考,如有不對,歡迎指正。
你可能會好奇框架是如何工作的,我會創建一個簡單的框架來演示一下。
框架的目標
首先,為什么我們需要框架而不是庫呢?框架的目標是定義一個讓開發者實現基於個性化需求的某些功能的過程,換句話說,框架定義了骨架而開發者進行填補。
簡單的框架
在下面的例子中,前三個類是框架的一部分,第四個類是該框架的客戶端代碼。
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 }
總結
這個例子只是展示了一個簡單的模板和鈎子是如何工作的,一個實用的框架比這更復雜,不僅包含了模板-實例之間的關系,而且對於如何有效的提高性能和程序可用性也是很復雜的過程。