技術關鍵:
多態:面向對象程序設計的基本特征之一。
Java中的多態主要是通過重寫父類(或接口)中的方法來實現的。
實現過程:
1.編寫Car類,該類是一個抽象類,定義了一個抽象方法getInfo( )。
package test; public abstract class Car { public abstract String getInfo(); //用來描述汽車的信息 }
2.編寫BMW類,該類繼承自Car並實現getInfo( )方法。
1 package test; 2 public class BMW extends Car { 3 @Override 4 public String getInfo() { 5 // TODO Auto-generated method stub 6 return "BMW"; 7 } 8 }
3.編寫Benz類,該類繼承自Car並實現getInfo( )方法。
1 package test; 2 public class Benz extends Car{ 3 @Override 4 public String getInfo() { 5 return "Benz"; 6 } 7 }
4.編寫CarFactory類,該類定義了一個靜態方法getCar( ),它可以根據用戶指定的車型來創建對象。
1 package test; 2 public class CarFactory { 3 public static Car getCar(String name) { 4 if (name.equalsIgnoreCase("BMW")) { //如果需要BMW,則創建BMW對象 5 return new BMW(); 6 } else if (name.equalsIgnoreCase("Benz")) { //如果需要Benz,則創建Benz對象 7 return new Benz(); 8 } else { 9 return null; //暫時不支持其他車型 10 } 11 } 12 }
5.編寫Customer類用來進行測試。在main()方法中,根據用戶需要提取不同的汽車。
1 package test; 2 public class Customer { 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 System.out.println("顧客需要購買BMW"); 6 Car bmw = CarFactory.getCar("BMW"); 7 System.out.println("提取汽車:" + bmw.getInfo()); 8 System.out.println("顧客需要購買Benz"); 9 Car benz = CarFactory.getCar("Benz"); 10 System.out.println("提取汽車:" + benz.getInfo()); 11 } 12 }
輸出如下圖所示:

小結:
本實例實現了設計模式中的簡單工廠模式,該模式將創建對象的過程放在了一個靜態方法中來實現。實際編程中,如果需要創建大量對象,使用該模式比較理想。當4S店支持新的車型時,只需要修改CarFactory類進行增加即可,對其他類不需要修改。