2013-07-15 96 views
0

工廠類似於DriverManager.getConnection("...conn...")。它們是一類FactoryClass與普通Java類

類方法現在,他們如何從普通類像一個不同的java.lang.util

通過正常上課我的意思是,他的實例是像如下創建。

Date d=new Date(); 

那麼什麼是工廠類相比上面提到的一個(日期類)?

+0

很難知道這裏提到的是什麼。什麼是問題(這是非常難以確定沒有任何問號)? –

+0

「Normal」是什麼意思?工廠班是正常的。實際上'java.lang.util'中有工廠類(例如'Collections'類,Factory是一個設計模式,FactoryClasses實現了這個設計模式。 – Aurand

回答

1

他們是「正常」類,但他們遵循工廠方法模式

Factory example implementation

工廠模式用於:

  • 創建對象,而不暴露的實例化邏輯給客戶。
  • 參考新創建的對象通過一個公共接口

來源:http://www.oodesign.com/factory-pattern.html

下面是如何做到這一點在Java

package designPatterns.creational.factory; 

public class CarFactory { 
    public static Car buildCar(CarType model) { 
     Car car = null; 
     switch (model) { 
      case SMALL: 
        car = new SmallCar(); 
        break; 

      case SEDAN: 
        car = new SedanCar(); 
        break; 

      case LUXURY: 
        car = new LuxuryCar(); 
        break; 

      default: 
        // throw some exception 
        break; 
      } 
     return car; 
    } 
} 

完整的例子爲例:http://howtodoinjava.com/2012/10/23/implementing-factory-design-pattern-in-java/

1

你講的工廠方法是ca lled a Design Pattern。工廠方法是一種創建模式,可以防止構造函數的硬編碼,並且可能是最常用的面向對象設計模式之一。這裏要實現的關鍵是Factory模式設計用於創建對象的界面。它通過減少重複代碼的數量來促進DRY原理(不要重複自己)。

如果您的代碼需要可移植,您將需要避免在應用程序中對構造函數進行硬編碼。有時最好讓子類決定實例化哪個類。

你問Factory創建的對象和沒有創建的對象之間的區別?它們都是對象,在幕後調用工廠方法的類正在創建一個對象並將其返回給您。有些對象非常複雜,使用預定義的接口創建對象更有意義。最後,有時候關於創建對象的信息不應該暴露給用戶。