簡單工廠模式
簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
簡單工廠模式的核心思想就是:有一個專門的類來負責創建實例的過程。
好處:創建對象由工廠類去創建,當我們要加入對象時,採用這種方法很方便,而不用去改太多代碼。
工廠模式的UML圖
下面還是看實例吧!
食品店,客人在食品店拿着菜單可以點不同的菜。
這裏 菜單就相當於一個工廠類,去產生客人所點的食品
這裏抽象類就是指食品,食品就包含了所有的食品
具體實現類就是去完成抽象類,具體產生食品的做法。
package factory;
//抽象類A 所有食品的超類,具體食品類須要實現這個類的方法
interface Food {
void method(); //製作某個食品的方法
}
//具體實現類A
class Bread implements Food
{
//產生一個麪包
public void method()
{
System.out.println("你點了一個麪包");
}
}
//具體實現類B
class Chicken implements Food
{
//產生一個雞翅
public void method()
{
System.out.println("你點了一對雞翅");
}
}
//具體實現類C
class Cola implements Food
{
//產生一個可樂
public void method()
{
System.out.println("你點了一份可樂");
}
}
/*
* 如果我們想加入其它的食品,
* 在這裏直接編寫一個類,去實現Food即可,大大減少了代碼的修改
* class ...
*/
//工廠類,用於產生對象
class Factory
{
// 因爲產生其子類,所以返回其超類。
static Food getFood(int n)
{
if(n==1)
return new Bread(); // 通過反射 Bread.class.newInstance();這個得解決異常
else if(n==2)
return new Chicken();
else if(n==3)
return new Cola();
return null;
}
}
//客戶端
class SimpleFactoryText
{
public static void main(String [] args) throws Exception
{
//通過工廠類建立對象
Food f = Factory.class.newInstance().getFood(1); // Food f = Factory.getFood(1);
f.method();
Food f2 = Factory.class.newInstance().getFood(2);
f2.method();
Food f3 = Factory.class.newInstance().getFood(3);
f3.method();
}
}